#include <stdio.h>
#include <string.h>
void caozuo1(char a[]){
int p,q,k,min;
scanf("%d%d",&p,&q);
for(k=p,min=0;k<p+q;k++,min++){
a[min]=a[k];
}
a[min]='\0';
printf("%s",a);
}
void caozuo2(char b[]){
int i,j,k;
char temp[200];
char tempp[200];
scanf("%d%s",&i,temp);
for(j=i,k=0;b[j]!='\0';j++,k++){
tempp[k]=b[j];
}
tempp[k]='\0';
b[i]='\0';
strcat(strcat(b,temp),tempp);
printf("%s",b);
}
void caozuo3(char c[]){
char temp[200];
int ans=0,flag=0,i,j;
scanf("%s",temp);
for(i=0;c[i]!='\0';i++){
if(c[i]==temp[0]){
for(j=i;temp[j-i]!='\0';j++){
if(c[j]!=temp[j-i]){
flag=1;break;
}
}
if(flag==0){ans++;}
else {flag=0;}
}
}
if(ans!=0&&ans<=strlen(c))
printf("%d",ans);
else printf("-1");
}
int main(void){
int n,min,max;
scanf("%d",&n);
char str[200];
scanf("%s",str);
for(int i=0;i<n;i++){
int j;
scanf("%d",&j);
if(j==1){
char a[200];
scanf("%s",a);
printf("%s",strcat(str,a));
if(i!=n-1) printf("\n");
}
else if(j==2){
caozuo1(str);
if(i!=n-1) printf("\n");
}
else if(j==3){
caozuo2(str);
if(i!=n-1) printf("\n");
}
else{
caozuo3(str);
if(i!=n-1) printf("\n");
}
}
return 0;
}