
1
//字典树模板2
#include <iostream>3
using namespace std;4
const int kind=26;5
struct node6


{7
int i,count;8
node *next[kind];9
node()10

{11
count=1;12
for(i=0;i<kind;i++)13
next[i]=NULL;14
}15
};16
void insert(node *root,char *word)17


{18
int i=0,branch;19
node *local=root;20
if(local==NULL)21

{22
local=new node();23
root=local;24
}25
while(word[i])26

{27
branch=word[i]-'a';28
if(local->next[branch])29
local->next[branch]->count++;30
else31
local->next[branch]=new node();32
i++;33
local=local->next[branch];34
}35
}36
int search(node *root,char *word)37


{38
int i=0,branch,ans;39
node *local=root;40
41
if(local==NULL)42
return 0;43
while(word[i])44

{45
branch=word[i]-'a';46
if(!local->next[branch])47
return 0;48
i++;49
local=local->next[branch];50
ans=local->count;51
}52
return ans;53
}54
int main()55


{56
char str[12];57
node *root=new node;58
while(gets(str) && strcmp(str,""))59
insert(root,str);60
while(scanf("%s",str)!=EOF)61
printf("%d\n",search(root,str));62
return 0;63
}