#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<string>
using namespace std;
int main(){
    int n;
    while(scanf("%d",&n),n){
        map<string,int>mi;
        for(int i=0;i<n;i++){
            string str;
            int val;
            cin>>str>>val;
            mi[str]=val;
        }
        map<string,vector<string> >es;
        int m;
        scanf("%d",&m);
        for(int i=0;i<m;i++){
            string t;
            int c;
            cin>>t>>c;
            vector<string>V(c);
            for(int i=0;i<c;i++)cin>>V[i];
            es[t]=V;
        }

        for(int i=0;i<n;i++){
            map<string,vector<string> >::iterator it;
            for(it=es.begin();it!=es.end();it++){
                string s=it->first;
                vector<string>V=it->second;
                int sum=0;
                for(int j=0;j<V.size();j++){
                    sum+=mi[V[j]];
                }
                mi[s]=min(mi[s],sum);
            }
        }
        string str;
        cin>>str;
        printf("%d\n",mi[str]);
    }
    return 0;
}