#include <stdio.h>
typedef struct node{
char name[24];
char id[19];
int num;
node * pre;
node * next;
}node;
node nhs[100004];
node ihs[100004];
node ihspool[100004];
int iindex = 0;
node * getinew(){
return &ihspool[iindex++];
}
node nhspool[100004];
int nindex = 0;
node * getnnew(){
return &nhspool[nindex++];
}
int getikey(char id[19]){
int x = 0;
for (int i = 0; i <= 17; i++)
x = (10 * x + (id[i] - '0')) % 100003;
return x;
}
int getnkey(char name[24]){
int x = 0;
for (int i = 0; i <= 22; i++)
x = (26 * x + (name[i] - 'A')) % 100003;
return x;
}
void inserti(int key, node * newnode){
node * head = &ihs[key];
newnode->pre = head;
newnode->next = head->next;
head->next = newnode;
newnode->next->pre = newnode;
head->num++;
}
void insertn(int key, node * newnode){
node * head = &nhs[key];
newnode->pre = head;
newnode->next = head->next;
head->next = newnode;
newnode->next->pre = newnode;
head->num++;
}
void init(){
for (int i = 0; i <= 100003; i++){
ihs[i].pre = &ihs[i];
ihs[i].next = &ihs[i];
ihs[i].num = 0;
nhs[i].pre = &nhs[i];
nhs[i].next = &nhs[i];
nhs[i].num = 0;
}
}
bool isame(char a[19], char b[19]){
int flag = true;
for (int i = 0; i <= 17; i++){
if (a[i] != b[i]){
flag = false;
break;
}
}
return flag;
}
bool nsame(char a[24], char b[24]){
int flag = true;
for (int i = 0; i <= 22; i++){
if (a[i] != b[i]){
flag = false;
break;
}
}
return flag;
}
node * searchi(char a[19]){
int key = getikey(a);
int x = ihs[key].num;
node * y = &ihs[key];
while (x--){
y = y->next;
if (isame(a, y->id)) return y;
}
}
int searchn(char name[24]){
int key = getnkey(name);
int x = nhs[key].num;
node * y = &nhs[key];
int num = 0;
while (x--){
y = y->next;
if (nsame(name, y->name)) num++;
}
return num;
}
int main(){
freopen("input.txt", "r", stdin);
freopen( "result.txt","w",stdout);
init();
for (int i = 1; i <= 100000; i++){
node * newnode=getinew();
scanf("%s %s", newnode->name,newnode->id);
int key = getikey(newnode->id);
inserti(key, newnode);
node * newnnode = getnnew();
for (int i = 0; i <= 17; i++)
newnnode->id[i] = newnode->id[i];
for (int i = 0; i <= 22;i++)
newnnode->name[i] = newnode->name[i];
key = getnkey(newnnode->name);
insertn(key, newnnode);
}
char id[19];
for (int i = 1; i <= 100000; i++){
scanf("%s", &id);
node * newnode = searchi(id);
printf("%s\n",newnode->name);
}
char name[24];
for (int i = 1; i <= 100000; i++){
scanf("%s", &name);
printf("%d\n", searchn(name));
}
}