#include #include using namespace std; const int N = 100000*30; int ch[N][26],vis[N]; int tot; int newnode() { ++tot; vis[tot]=0; for(int i=0; i<26; i++) ch[tot][i]=0; return tot; } void inst(int now,char s[]) { for(int i=0; s[i]; i++) { ++vis[now]; if(!ch[now][s[i]-'a']) ch[now][s[i]-'a']=newnode(); now=ch[now][s[i]-'a']; } ++vis[now]; } void del(int root,char s[]) { int now(root); for(int i=0;s[i];++i) { if(!ch[now][s[i]-'a']) return; now=ch[now][s[i]-'a']; } for(int i=0;i<26;i++) ch[now][i]=0; int dt(vis[now]); now=root; for(int i=0;s[i];++i) { vis[now]-=dt; now=ch[now][s[i]-'a']; } vis[now]-=dt; } bool srch(int now,char s[]) { for(int i=0; s[i]; i++) { if(!ch[now][s[i]-'a']) return false; now=ch[now][s[i]-'a']; } return vis[now]; } int main() { int n; while(scanf("%d",&n)+1) { tot=0; int root=newnode(); for(int i=0; i