#include <bits/stdc++.h>
#define S 22000000
using namespace std;
int q, opt, x;
string s;
int lth, hs, kind[S], ans[6], inf;
int main() {
memset(kind, 127, sizeof(kind));
inf = kind[0];
scanf("%d", &q);
while (q--) {
scanf("%d", &opt);
cin >> s;
lth = s.size();
if (opt == 1) {
scanf("%d", &x);
if (inf == kind[0]) {
inf = x;
} else {
inf = max(inf, x);
}
hs = 0;
for (char i : s) {
hs = hs * 27 + (i - 'a');
}
kind[hs] = min(kind[hs], x);
for (int i = 1; i <= lth; i++) {
int zt = (1 << i) - 1;
for (int j = 0; j <= zt; j++) {
hs = 0;
for (int k = 1; k <= i; k++) {
if (((j >> (k - 1)) & 1) == 1) {
hs = hs * 27 + (s[k - 1] - 'a');
} else {
hs = hs * 27 + 26;
}
}
kind[hs] = min(kind[hs], x);
}
}
} else {
hs = 0;
for (char i : s) {
hs = hs * 27 + (i - 'a');
}
if (kind[hs] <= 1e9) {
printf("%d\n", kind[hs]);
} else {
ans[0] = inf;
for (int i = 1; i <= 5; i++) {
ans[i] = 1000000001;
}
for (int i = 1; i <= lth; i++) {
int zt = (1 << i) - 1;
for (int j = 0; j <= zt; j++) {
hs = 0;
int sim = 0;
for (int k = 1; k <= i; k++) {
if (((j >> (k - 1)) & 1) == 1) {
hs = hs * 27 + (s[k - 1] - 'a');
sim++;
} else {
hs = hs * 27 + 26;
}
}
ans[sim] = min(ans[sim], kind[hs]);
}
}
for (int i = lth; i >= 0; i--) {
if (ans[i] <= 1e9) {
printf("%d\n", ans[i]);
break;
}
}
}
}
}
return 0;
}