只想说句空间被狗日了。。。。。
/*****************************************
Author :Crazy_AC(JamesQi)
Time :2016
File Name :
*****************************************/
// #pragma comment(linker, "/STACK:1024000000,1024000000")
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <sstream>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <map>
#include <set>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <climits>
using namespace std;
#define MEM(x,y) memset(x, y,sizeof x)
#define pk push_back
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> ii;
typedef pair<ii,int> iii;
const double eps = 1e-10;
const int inf = 1 << 30;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int maxn = 1000005;
const int maxm = 26;
struct Tire {
int num;
int g[maxn][maxm];
int val[maxn];
void init();
int getid(char c);
void insert(char *s);
int find(char *s);
}solve;
void Tire::init() {
num = 1;
val[0] = 0;
memset(g[0], 0,sizeof g[0]);
}
int Tire::getid(char c) {
return c - 'a';
}
int Tire::find(char *s) {
int u = 0;
int len = strlen(s);
for (int i = 0;i < len;++i) {
int id = getid(s[i]);
if (g[u][id] == 0) return 0;
u = g[u][id];
}
return val[u];
}
void Tire::insert(char *s) {
int u = 0;
int len =strlen(s);
for (int i = 0;i < len;++i) {
int id = getid(s[i]);
if (g[u][id] == 0) {
val[num] = 0;
memset(g[num],0,sizeof g[num]);
g[u][id] = num++;
}
u = g[u][id];
val[u]++;
}
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
char s[11];
solve.init();
while(gets(s) && strcmp(s, ""))
solve.insert(s);
while(gets(s))
printf("%d\n", solve.find(s));
return 0;
}