#include<iostream>
#include<cstdio>
#include<algorithm>
#include<stdio.h>
#include <string>
#include <sstream>
using namespace std;
//c==2时 手动拼接为啥就不对呢
//待我去讨论区问一问
int main() {
int q;
cin >> q;
string str,strz="";
cin >> str;
string s[105];
int sum = 0;
for (int i = 1; i <= q; i++) {
int c;
cin >> c;
string str1;
int a, b;
if (c == 1) {
cin >> str1;
strz = str + str1;
str = strz;
s[sum++] = str;
continue;
}
if (c == 2) {
cin >> a >> b;
strz = str.substr(a, b); //题解中的
//for (int i = a; i < (a+b,str.length()); i++) { //为什么不写min() 省略了????
// strz += str[i];
//}
str = strz;
s[sum++] = str;
continue;
}
if (c == 3) {
cin >> a >> str1;
str.insert(3, str1); //查了百度
s[sum++] = str;
continue;
}
if (c == 4) { //查了百度
cin >> str1;
int index = str.find(str1,0);
if (index < str.length()) {
string res;
stringstream ss;
ss << index;
ss >> res;
s[sum++] = res;
}
else {
s[sum++] = "-1";
}
continue;
}
}
for (int i = 0; i < q; i++) {
cout << s[i] << endl;
}
return 0;
}