#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<queue>
using namespace std;
typedef pair<string,int> P;
map<string,vector<string> > rm;
map<string,int> I;
int N,M;
//map<string,int> dp;
int solve(string S){
  // if(dp[S]!=0) return dp[S]; 
  if(rm[S].empty()) return I[S];
  int n = rm[S].size();
  int ret=0;
  for(int i=0;i<n;i++){
    ret+=solve(rm[S][i]);
  }
  ret = min(I[S],ret);
  return ret;
}

main(){
  while(1){
    cin >> N;
    if(!N) break;
    for(int i=0;i<N;i++){
      string Is;
      int Ii;
      cin >> Is >> Ii;
      I[Is]=Ii;
    }
    cin >> M;
    for(int i=0;i<M;i++){
      string s;
      int k;
      cin >> s >> k;
      for(int i=0;i<k;i++){
	string si;
	cin >> si;
	rm[s].push_back(si);
      }
    }
    string Q;
    cin >> Q;
    cout << solve(Q) << endl;
    rm.clear();
    I.clear();
  }
}