#include <iostream>
using namespace std;
class TreeNode
{
public:
TreeNode *NextNode[27];
bool HasThisLetter[27];
int TreeNumber;
TreeNode():TreeNumber(0)
, HasThisLetter{false}
, NextNode{NULL}
{
};
};
void insert(TreeNode *tempNode, char *temp, int deep) {
if (!tempNode)
return;
if (0 == temp[deep])
return;
int NowLetterNumber = temp[deep] - 'a';
if (tempNode->HasThisLetter[NowLetterNumber]){
tempNode->NextNode[NowLetterNumber]->TreeNumber++;
insert(tempNode->NextNode[NowLetterNumber], temp, ++deep);
}else {
tempNode->HasThisLetter[NowLetterNumber] = true;
TreeNode *newTreeNode = new TreeNode();
tempNode->NextNode[NowLetterNumber] = newTreeNode;
newTreeNode->TreeNumber++;
insert(newTreeNode, temp, ++deep);
}
}
int search(TreeNode *tempHead, char *temp) {
int i = 0;
TreeNode *NowNode = tempHead;
while (temp[i] != 0) {
int NowLetterNumber = temp[i] - 'a';
if (NowNode->HasThisLetter[NowLetterNumber]) {
NowNode = NowNode->NextNode[NowLetterNumber];
}
else
{
return 0;
}
i++;
}
return NowNode->TreeNumber;
}
int main()
{
int n;
int m;
cin >> n;
char world[20];
TreeNode *Head = new TreeNode();
for (int i = 1; i <= n; i++) {
cin >> world;
insert(Head,world, 0);
}
cin >> m;
for (int i = 1; i <= m; i++)
{
cin >> world;
cout << search(Head, world) << endl;
}
return 0;
}