#include <iostream>
#include <queue>

using namespace std;

void Swap(int *a,int *b){
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

//高いのが大きくする。
void BabbleSort(int *a,int n){
	for(int i=0;i<n;i++){
		for(int j=n-1;j>i;j--){
			if(a[j] >= a[j-1]){
				Swap(&a[j],&a[j-1]);
			}
		}
	}
}

int main(){

	//データ入力
	queue <int> num,ansNum,ansNum1;
	int tmp0,tmp1;
	char unko;
	while(cin>>tmp0){
		cin>>unko;
		cin>>tmp1;
		if(tmp0==0&&tmp1==0){
			break;
		}
		num.push(tmp0);
		ansNum.push(tmp1);
		ansNum1.push(tmp1);
	}

	int ans[30+1];

	for(int i=0;i<=30;i++){
		ans[i]=0;
	}
	int size = ansNum.size();
	for(int i=0;i<size;i++){
		ans[i] = ansNum.front();
		ansNum.pop();
	}

	int *data = new int(num.size());

	for(int i=0;i<size;i++){
		data[num.front()] = ansNum1.front();
		num.pop();
		ansNum1.pop();
	}
	//ここまでで入力完了

	//正当数ごとに順位をつける。
	BabbleSort(ans,31);

	//どうやら今回の問題は2位が3人いても次は3位らしいので削除を行う。
	int unkoA[30+1];
	int tmp = -1;
	for(int i=0;i<31;i++){
		if(tmp == ans[i]){
			unkoA[i] = 0;
			continue;
		}
		unkoA[i] = ans[i];
		tmp = ans[i];
	}

	BabbleSort(unkoA,31);

	//整理番号が入力されるので、それについて順位を答える。
	int lNum;
	while(cin>>lNum){
		//その整理番号の正当数をまず変数に
		int lAns = data[lNum];
		//その整理番号がどこの順位にいるか探索
		for(int i=0;i<31;i++){
			if(unkoA[i] == lAns){
				cout<<i+1<<endl;
				break;
			}
		}
	}

	return 0;

}

/*
Sample Input
1,20
2,20
3,30
4,10
5,10
6,20
0,0
1
2
4
5
Output for the Sample Input
2
2
3
3
*/