#include <stdio.h>
#include <string.h>
int main()
{
int q = 0;
scanf("%d", &q);
char e = getchar();
int o = 0;
char a[100] = { 0 };
char b[100] = { 0 };
char c[100] = { 0 };
char d[100] = { 0 };
char g[100] = { 0 };
char h[100] = { 0 };
int i = 0;
int j = 0;
int x = 0;
int y = 0;
int z = 0;
gets(a);
while (q--)
{
scanf("%d", &o);
char f = getchar();
if (o == 1)
{
scanf("%s", b);
strcat(a, b);
int sz = strlen(a);
for (i = 0; i < sz; i++)
{
printf("%c", a[i]);
}
printf("\n");
}
else if (o == 2)
{
scanf("%d %d", &x, &y);
for (i = 0; i < y; i++)
{
c[i] = a[x + i];
}
for (i = 0; i < y; i++)
{
printf("%c", c[i]);
}
printf("\n");
}
else if (o == 3)
{
scanf("%d", &z);
getchar();
scanf("%s", g);
int sz1 = strlen(c);
for (i = z; i < sz1; i++)
{
d[i - z] = c[i];
c[i] = '\0';
}
strcat(g, d);
strcat(c, g);
int sz2 = strlen(c);
for (i = 0; i < sz2; i++)
{
printf("%c", c[i]);
}
printf("\n");
}
else if (o == 4)
{
scanf("%s", h);
int sz3 = strlen(c);
int sz4 = strlen(h);
int count = 0;
int flag = 1;
for (i = 0; i < sz3; i++)
{
if (c[i] == h[0])
{
for (j = 0; j < sz4; j++)
{
if (c[i + j] != h[j])
{
flag = 0;
}
}
if (flag)
{
count++;
}
}
}
if (count)
{
printf("%d\n", count);
}
else
{
printf("-1\n");
}
}
}
return 0;
}