#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define MAXLEN 255
typedef struct {
char ch[MAXLEN];
int length;
} SString;
bool SubString1(SString *S, int pos, int len) {
SString Sub;
if (pos + len > S->length)
return false;
for (int i = pos; i < pos + len; ++i) {
Sub.ch[i - pos] = S->ch[i];
}
Sub.length = len;
strcpy(S->ch, Sub.ch);
S->length = len;
return true;
}
bool SubString(SString *sub, SString S, int pos, int len) {
if (pos + len > S.length)
return false;
for (int i = pos; i < pos + len; ++i) {
sub->ch[i - pos] = S.ch[i];
}
sub->length = len;
return true;
}
int StrCompare(SString S, SString T) {
for (int i = 0; i < S.length && i < T.length; ++i) {
if (S.ch[i] != T.ch[i])
return S.ch[i] - T.ch[i];
}
return S.length - T.length;
}
int Index(SString S, SString T) {
int i = 0, n, m;
m = strlen(T.ch);
n = strlen(S.ch);
SString sub;
while (i <= n - m + 1) {
SubString(&sub, S, i, m);
if (StrCompare(sub, T) != 0)
++i;
else
return i;
}
return -1;
}
void addString(SString *S, SString str) {
int a = S->length, b = str.length;
S->length = a + b;
for (int i = a; i < a + b; ++i) {
S->ch[i] = str.ch[i - a];
}
}
void insertString(SString *S, SString sub, int a) {
SString s1;
strcpy(s1.ch, S->ch);
SubString1(&s1, a, strlen(s1.ch) - 1);
S->length = S->length + sub.length;
for (int i = a; i < a + sub.length; ++i) {
S->ch[i] = sub.ch[i - a];
}
for (int i = a + sub.length; i < S->length; ++i) {
S->ch[i] = s1.ch[i - a - sub.length];
}
}
int main() {
int n;
scanf("%d", &n);
SString S;
scanf("%s", S.ch);
S.length = strlen(S.ch);
for (int i = 1; i <= n; ++i) {
int m;
scanf("%d", &m);
if (m == 1) {
SString str;
scanf("%s", str.ch);
str.length = strlen(str.ch);
addString(&S, str);
printf("%s\n", S.ch);
} else if (m == 2) {
int a, b;
scanf("%d%d", &a, &b);
SubString1(&S, a, b);
printf("%s\n", S.ch);
} else if (m == 3) {
int a;
scanf("%d", &a);
SString sub;
scanf("%s", sub.ch);
sub.length = strlen(sub.ch);
insertString(&S, sub, a);
printf("%s\n", S.ch);
} else if (m == 4) {
SString sub;
scanf("%s", sub.ch);
sub.length = strlen(sub.ch);
int a = Index(S, sub);
printf("%d\n", a);
}
}
}