#include using namespace std; struct Node { int p, val; array v; Node(int p) : p(p), val(0) {for(int i = 0; i < 26; ++i) v[i] = -1;} }; vector v = {Node(-1)}; int move(int t, char c) { const int a = c - 'a'; if(v[t].v[a] == -1) { v[t].v[a] = v.size(); v.push_back(Node(t)); } return v[t].v[a]; } void insert(string S) { int now = 0; v[now].val += 1; for(auto c : S) { now = move(now, c); v[now].val += 1; } } int main() { int N; cin >> N; vector A(N); for(int i = 0; i < N; ++i) cin >> A[i]; for(int i = 0; i < N; ++i) insert(A[i]); int Q; cin >> Q; int now = 0; while(Q--) { int cmd; cin >> cmd; if(cmd == 1) { char x; cin >> x; now = move(now, x); } if(cmd == 2) { now = v[now].p; } if(cmd == 3) { cout << v[now].val << "\n"; } } }