/*
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;
	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,del,ins,upd;
	if(a[0]==b[0])return yes(a+1,b+1);
	del=yes(a+1,b)+Va[a[0]];
	ins=yes(a,b+1)+Va[b[0]];
	upd=yes(a+1,b+1)+d[a[0]][b[0]];
	min=del;
	if(min>ins)min=ins;
	if(min>upd)min=upd;
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);

return 0;
}