#include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; const int kind = 26; struct node{ int num; bool terminal; node *next[26]; node(){ num = 1; terminal = false; memset(next, 0, sizeof(next)); } }; string s1, s2; void Insert(node *root, string s1){ node *p = root; int index; int len = s1.length(); for(int i = 0; i < len; i++){ index = s1[i] - 'a'; if(p -> next[index] == NULL){ p -> next[index] = new node(); } else{ p -> next[index] -> num++; } p = p -> next[index]; } p ->terminal = true; } int Find(node *root, string s2){ node *p = root; int i, index; int len = s2.length(); for(i = 0; i < len; i++){ index = s2[i] - 'a'; if(p->next!=NULL){ if(i == len - 1){ return p->next[index]->num; } } else{ return 0; } p = p->next[index]; } return 0; } int main() { node *root = new node(); while(getline(cin, s1) && !s1.empty()){ Insert(root, s1); } while(getline(cin, s2)){ int k = Find(root, s2); printf("%d\n", k); } return 0; }