#include <iostream> using namespace std; struct trie { trie():occur(0){ for(int i = 0; i < 26; ++i) next[i] = NULL; } trie *next[26]; int occur; }; trie *root = new trie; void insert(char *a) { int len = strlen(a); trie *p = root; for(int i = 0; i < len; ++i) { if(! (p->next[a[i] - 'a']) ) { trie *t = new trie; t->occur = 1; p->next[a[i] - 'a'] = t; } else p->next[a[i] - 'a']->occur ++; p = p->next[a[i] - 'a']; } } int search(const char * targ) { int len = strlen(targ); trie *p = root; for(int i = 0; i < len; ++i) { if(!p->next[targ[i] - 'a']) return 0; else p = p->next[targ[i] - 'a']; } if(p) return p->occur; else return 0; } int main(void) { //freopen("1.txt", "r", stdin); char a[10],b[10]; while(gets(a) && a[0]) insert(a); while(gets(b)) cout << search(b) << endl; return 0; }