#include <algorithm>
#include <functional>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <bitset>
#include <climits>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<(n);i++)
#define pb(e) push_back(e)
#define mp(a, b) make_pair(a, b)
#define fr first
#define sc second

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
using namespace std;
typedef pair<int ,int > P;
typedef long long ll;

int N;
map<string,int> data;
int sum(int p) {
    int sum = 0;
    rep(i,p) {
        string s;
        cin>>s;
        sum += data[s];
    }
    return sum;

}
void solve() {
    data.clear();
    string s;
    rep(i,N) {
        int a;
        cin>>s>>a;
        data[s]=a;
    }
    int M;
    cin>>M;
    rep(i,M) {
        int p;
        cin>>s>>p;
        data[s] = min(data[s],sum(p));
    }

    cin>>s;
    cout<<data[s]<<endl;


}
int main() {
    while(cin>>N) {
        if(!N) break;
        solve();

    }
    return 0;
}