#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int trie[1000010][26]; //用数组定义一个字典树,存储下一个字符的位置
int num[1000010]={0}; //以某一个字符串为前缀的单词个数
int pos=1; //当前新分配的存储位置
void Insert(char str[]) //在字典树中插入某个单词
{
int p=0;
for(int i=0;str[i];i++)
{
int n=str[i]-'a';
if(trie[p][n]==0) //如果对应字符还没有值
{
trie[p][n]=pos++;
}
p=trie[p][n];
num[p]++;
}
}
int Find(char str[]) //查询以某个字符串为前缀的单词数量
{
int p=0;
for(int i=0;str[i];i++)
{
int n=str[i]-'a';
if(trie[p][n]==0)
{
return 0;
}
p=trie[p][n];
}
return num[p];
}
int main()
{
char str[11];
while(gets(str))
{
if(str[0]==NULL) //gets读到回车符(空行)会自动转化为NULL
break;
Insert(str); //在字典树中插入某个单词
}
while(gets(str)) //待查询字符串
{
printf("%d\n",Find(str));
}
return 0;
}