Trie字符串统计
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int son[N][26], cnt[N], idx;
char str[N];
void insert(){
int p = 0;
for(int i = 0; str[i]; ++i){
int u = str[i] - 'a';
if(!son[p][u]) son[p][u] = ++idx;
p = son[p][u];
}
cnt[p]++;
}
int query(){
int p = 0;
for(int i = 0; str[i]; ++i){
int u = str[i] - 'a';
if(!son[p][u]) return 0;
p = son[p][u];
}
return cnt[p];
}
int n;
signed main(){
cin >> n;
while(n--){
char op[2];
scanf("%s%s", op, str);
if(op[0] == 'I') insert();
else printf("%d\n", query());
}
return 0;
}