#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")