/*
TASK: ldist
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
char A[1024],B[1024];
int d[256][256],Va[256];

int yes(char *a,char *b){
	int i,s=0,x,y,z,m;
	if(strlen(a)==0&&strlen(b)==0){return 0;}
	if(strlen(a)==0){for(i=0;i<strlen(b);i++)s=s+Va[b[i]];return s;}
	if(strlen(b)==0){for(i=0;i<strlen(a);i++)s=s+Va[a[i]];return s;}
	int min;
	if(a[0]==b[0])return yes(a+1,b+1);
	x=Va[a[0]];
	y=Va[b[0]];
	z=d[a[0]][b[0]];
	m=x;
	if(m>y)m=y;
	if(m>z)m=z;
	if(m==z)min=yes(a+1,b+1)+z;
	else if(m==x)min=yes(a+1,b)+x;
	else if(m==y)min=yes(a,b+1)+y;
	
	return min;
}

int main(){

	ifstream fin("test.in");
	int s=0,j,q,p,i;
	char c,e;

	for(i=0;i<256;i++)Va[i]=100;
	fin>>p;
	for(i=0;i<p;i++){fin>>c;fin>>Va[c];}

	fin>>q;
	for(i=0;i<256;i++)for(j=0;j<256;j++)d[i][j]=100;

	for(i=0;i<q;i++){
		fin>>c>>e;
		fin>>d[c][e];
		d[e][c]=d[c][e];
	}	
fin>>A>>B;

cout<<yes(A,B)<<endl;
return 0;
}
