/*
TASK: LDIST
LANG: C
*/
#include <stdio.h>
#define MIN(x, z) (((x)<(z))?(x):(z))
int v[256];

int d[256][256];
char s[1024]="", e[1024]="";
long f[1024][1024];
int ls, le;

int main() {
    int i, j, P;
    char ch, ch2;

    for(i=0; i<128; i++) {
    	for(j=0; j<128; j++)
        	d[i][j]=d[i+128][j]=d[i][j+128]=d[i+128][j+128]=100;
        v[i]=v[i+128]=100;
        d[i][i]=d[i+128][i+128]=0;
    }

    scanf("%d", &P);
    for(i=0; i<P; i++) {
    	scanf("%c%c%c%d", &j, &ch, &j, &j);
        v[ch]=j;
    }

    scanf("%d", &P);
    for(i=0; i<P; i++) {
    	scanf("%c%c%c%c%c%d", &j, &ch, &j, &ch2, &j, &j);
        d[ch][ch2]=d[ch2][ch]=j;
    }

    scanf("%s%n%s%n", s, &ls, e, &le); le-=ls+1;

    f[0][0]=0;
    for(i=1; i<=le; i++)
    	f[0][i]=f[0][i-1]+v[e[i-1]];
    for(i=1; i<=ls; i++)
    	f[i][0]=f[i-1][0]+v[s[i-1]];
    for(i=1; i<=ls; i++)
    	for(j=1; j<=le; j++)
        	f[i][j]=MIN(f[i-1][j-1]+d[s[i-1]][e[j-1]], MIN(f[i-1][j]+v[s[i-1]], f[i][j-1]+v[e[j-1]]));
    printf("%ld\n", f[ls][le]);
	return 0;
}
