#include<stdio.h>
#include<stdbool.h>
#include<string.h>
#include<math.h>
char str1[10010],str2[10010],str3[10010];
int main()
{
int op,i,j,a,b,q;
scanf("%d",&q);
getchar();
char *p1,*p2,*p3;
gets(str1);
while(q--)
{
scanf("%d",&op);
switch(op)
{
case 1:
getchar();
gets(str2);
strcat(str1,str2);
puts(str1);
break;
case 2:
scanf("%d%d",&a,&b);
p1=&str1[a];
str1[a+b]='\0';
strcpy(str2,p1);
str2[b]='\0';
str1[0]='\0';
strcat(str1,str2);
puts(str1);
break;
case 3:
scanf("%d",&i);
p1=&str1[i];
strcpy(str3,p1);
str3[strlen(p1)]='\0';
str1[i]='\0';
getchar();
gets(str2);
str1[strlen(str1)+strlen(str2)]='\0';
strcat(str1,str2);
str1[strlen(str1)+strlen(str3)]='\0';
strcat(str1,str3);
puts(str1);
break;
case 4:
getchar();
gets(str2);
p1=strstr(str1,str2);
if(p1==NULL)
printf("-1\n");
else
printf("%d\n",p1-str1);
break;
}
}
return 0;
}