#include <iostream>
#include <string>
#include <map>
using namespace std;

struct lst {
	int n;
	string it[101];
};
lst ls[101];
map<string,int> co,ln;

int ren(string st) {
	int i,k,m,s=0;
	k=ln[st]; m=ls[k].n;
	if (m==0) return co[st];
	for (i=0;i<m;i++) s+=ren(ls[k].it[i]);
	if (s>co[st]) s=co[st]; 
	return s;
	 }

int main() {
	int i,j,k,n,m,c;
	string st;
	while(cin >> n) {
		if (n==0) break;
		for (i=0;i<n;i++) { cin >> st >> c; co[st]=c; ln[st]=i;}
		cin >> n;
		for (i=0;i<n;i++) {
			cin >> st; k=ln[st];
			cin >> m; ls[k].n=m;
			if (m!=0) for (j=0;j<m;j++) cin >> ls[k].it[j];
		}
		cin >> st;
		k=ren(st);
		cout << k << endl;
	}	  
	return 0;
} 