#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d", &n);
char S[200] = { 0 };
char C[200] = { 0 };
getchar();
gets(S);
for (int i = 0; i <n; i++)
{
memset(C, 0, sizeof(C));
gets(C);
if (C[0] =='1')
{
char R[100] = { 0 };
int r = 0;
sscanf(C, "%d %s", &r, R,100);
strcat(S,R);
printf("%s", S);
}
else if (C[0] == '2')
{
int r, x, y,a=0;
char R[100] = { 0 };
sscanf(C, "%d %d %d", &r, &x, &y);
for (int i = x; i <= x+y-1; i++)
{
R[a++] = S[i];
}
memset(S, 0,sizeof(S));
for (int i = 0; i < a; i++)
{
S[i] = R[i];
}
printf("%s", S);
}
else if (C[0] == '3')
{
int r, x,l=strlen(S);
char R[100] = { 0 };
sscanf(C, "%d %d %s", &r, &x, R,100);
int b = strlen(R),a=0;
for (int i = l - 1 + b; i >= x + b; i--)
{
S[i] = S[i - b];
}
for (int j = x; j < x + b; j++)
{
S[j] = R[a++];
}
printf("%s", S);
}
else if (C[0] == '4')
{
int r,l=strlen(S);
char R[200] = { 0 };
sscanf(C, "%d %s", &r, R,100);
int b = strlen(R),a=0,i=0;
for (i = 0; i < l; i++)
{
if (S[i] == R[a]) a++;
else a = 0;
if (a == b) break;
}
if (a == b)
printf("%d", i - b + 1);
else printf("-1");
}
if (i < n ) printf("\n");
}
return 0;
}