#include<stdio.h>
#include<string.h>
char a[1000];
char b[1000];
char c[1000];
void op1()
{
int l,i=0;
l=strlen(a)-1;
while(b[i]!='\0')
{
a[l]=b[i];
l++;i++;
}
i=0;
while(a[i+1]!='\n'&&a[i+1]!='\0') i++;
a[i+1]='\0';
printf("%s\n",a);
}
void op2(int x,int y)
{
int i;
for(i=0;i<y;i++) b[i]=a[x++];
strcpy(a,b);
i=0;
while(a[i+1]!='\n'&&a[i+1]!='\0') i++;
a[i+1]='\0';
printf("%s\n",a);
}
void op3(int x)
{
int n,i,l;
i=0;
while(a[i+1]!='\n'&&a[i+1]!='\0') i++;
a[i+1]='\0';
l=strlen(a);
n=strlen(b);
for(i=l-1;i>=x;i--) a[i+n]=a[i];
for(i=0;i<n;i++) a[x+i]=b[i];
printf("%s\n",a);
}
void op4()
{
int l,n,i,j;
i=0;
while(a[i+1]!='\n'&&a[i+1]!='\0') i++;
a[i+1]='\0';
n=strlen(a);
l=strlen(b)-1;
b[l]='\0';
for(i=0;i<=n-l;i++)
{
for(j=0;j<l;j++) c[j]=a[i+j];
if(strcmp(c,b)==0)
{ printf("%d\n",i); break; }
}
if(strcmp(c,b)!=0) printf("-1\n");
}
int main()
{
int n,x,i,o,p,j;
char space;
scanf("%d",&n); fgets(a,101,stdin); memset(a,0,sizeof(a)); fgets(a,101,stdin);
i=-1;
while(a[i+1]!='\n'&&a[i+1]!='\0') i++;
a[i+1]='\0';
for(i=0;i<n;i++)
{
scanf("%d",&x);
switch(x) {
case 1:
scanf("%c",&space); fgets(b,101,stdin); op1(); break;
case 2:
scanf("%d %d",&o,&p); op2(o,p); break;
case 3:
scanf("%d",&o); scanf("%c",&space); fgets(b,101,stdin);
j=0; while(b[j+1]!='\n'&&b[j+1]!='\0') j++; b[j+1]='\0';op3(o); break;
case 4:
scanf("%c",&space);
fgets(b,101,stdin);
j=0; while(b[j+1]!='\n'&&b[j+1]!='\0') j++; b[j+1]='\0';op4(); break;
default: break;
}
}
return 0;
}