#include<cstdio>
char a[10000],record[100][10000],number=0;
int p(int n){
int i=0;
while (i<n) {
record[number][i]=a[i];
i++;
}
}
int y(int n){
int x=n,i=0;
do {
x/=10;
i++;
} while (x>0);
i--;
while (i>=0) {
if (n%10==0) record[number][i]='0';
if (n%10==1) record[number][i]='1';
if (n%10==2) record[number][i]='2';
if (n%10==3) record[number][i]='3';
if (n%10==4) record[number][i]='4';
if (n%10==5) record[number][i]='5';
if (n%10==6) record[number][i]='6';
if (n%10==7) record[number][i]='7';
if (n%10==8) record[number][i]='8';
if (n%10==9) record[number][i]='9';
n/=10;
i--;
}
}
int main(){
char b[10000],source;
int c[10],n,m,i=0,j=0,k=0,l=0,o=0,num=0;
scanf("%d",&n);
scanf("%s",a);
while (a[i]!='\0') {
i++;
}
a[i]='0';
while (j<n) {
scanf("%d",&m);
if (m==1) {
scanf("%s",b);
while (b[k]!='\0') {
a[i]=b[k];
k++;
i++;
}
p(i);
}
k=0;
if (m==2) {
scanf("%d%d",&c[0],&c[1]);
i=c[1];
while (k<c[1]) {
a[k]=a[c[0]];
c[0]++;
k++;
}
p(i);
}
k=0;
if (m==3) {
scanf("%d%s",&c[0],b);
while (b[k]!='\0') {
source=a[c[0]];
a[c[0]]=b[k];
b[k]=source;
a[i]=b[k];
c[0]++;
i++;
k++;
}
p(i);
}
k=0;
if (m==4) {
scanf("%s",b);
while (b[k]!='\0') k++;
while (a[l]!='\0') {
while (o<k) {
if (a[l+o]==b[o]) num++;
if (a[l+o]!=b[o]) break;
o++;
}
if (num==k) break;
num=0;
o=0;
l++;
}
if (k==0||k!=num) {
record[number][0]='-';
record[number][1]='1';
}
else y(l);
num=0;
o=0;
}
l=0;
k=0;
number++;
j++;
}
i=0;
while (i<number) {
j=0;
while (record[i][j]!='\0') {
printf("%c",record[i][j]);
j++;
}
printf("\n");
i++;
}
}