#include <iostream>
using namespace std;
// 用string::erase 会导致后续字符串复制前移,n比较大时开销巨大
// 光标不能移动,只需要标记出哪些区域被删除,然后输出未被删除的部分以及光标I即可
int main() {
int n,k;
cin >> n >> k;
string data;
cin >> data;
int cursor = -1;
for(auto i = 0; i < data.size(); i++) {
if(data[i] == 'I') {
cursor = i;
break;
}
}
// 光标左边字符位置
int l = cursor - 1;
// 光标右边字符位置
int r = cursor + 1;
for(auto i = 0;i < k; ++i) {
string op;
cin >> op;
if(op[0] == 'b') {
if(l < 0) {
continue;
}
if(r < data.size() && data[l] == '(' && ')' == data[r] ) {
l--;
r++;
} else {
l--;
}
} else {
if(r < data.size()) {
r++;
}
}
}
if(l >= 0) {
cout << string(&data[0],l+1);
}
cout << 'I';
if(r < data.size()) {
cout << string(&data[r],data.size() - r);
}
}
// 64 位输出请用 printf("%lld")