//在模板上稍微变下形就可以了
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<cstdlib>
using namespace std;
const int maxnum=26;
struct trie
{
int flag;
trie *next[maxnum];
};
trie *root;
void init()
{
int i;
root=(trie *)malloc(sizeof(trie));
root->flag=0;
for(i=0;i<maxnum;i++)
root->next[i]=NULL;
}
void insert(char *word)
{
int i;
trie *temp=root;
while(*word!='\0')
{
if(temp->next[*word-'a']==NULL)
{
trie *cur=(trie *)malloc(sizeof(trie));
for(i=0;i<maxnum;i++)
{
cur->next[i]=NULL;
//cur->next[i]->flag=0;
}
cur->flag=0;
temp->next[*word-'a']=cur;
}
temp=temp->next[*word-'a'];
temp->flag++;
word++;
}
}
/*int ans;
void sum(trie *temp)
{
if(temp->flag==true)
ans++;
if(temp==NULL)
return ;
for(int i=0;i<maxnum;i++)
{
if(temp->next[i]!=NULL)
sum(temp->next[i]);
}
}*/
int search(char *word)
{
trie *temp=root;
int i;
for(i=0;word[i]!='\0';i++)
{
if(temp==NULL||temp->next[word[i]-'a']==NULL)
return 0;
temp=temp->next[word[i]-'a'];
}
return temp->flag;
}
int main()
{
init();
char str[16];
while(gets(str)&&str[0]!='\0')
insert(str);
while(scanf("%s",str)!=EOF)
{
printf("%d\n",search(str));
}
return 0;
}