/*
TASK:LDIST
LANG:C
*/
#include <stdlib.h>
#include <stdio.h>
#define MAX_VALUE 100
#define MAX 100


int v=0, d=0, V[MAX], D[MAX][MAX], sum=0, razl=0;
char alfa[1024], beta[1024];

int main(){
int i, j=0;
char a[1], b[1];
//read input
//FILE* f;
//f = fopen("B1.txt", "r");
scanf("%i", &v);
//printf("v=%i\n", v);
for(i = 0; i < MAX; i++) V[i] = 100;
for(i = 0; i < v; i++){ scanf("%s", a);
   scanf("%i", &j); V[(int)a[0]]=j;}
scanf("%i", &d);
//printf("d=%i\n", d);
for(i = 0; i < MAX; i++)
   for(j = 0; j < MAX; j++)
      D[i][j] = 0;
for(i = 0; i < d; i++){
scanf("%s %s %i", a, b, &j); D[(int)a[0]][(int)b[0]] = j; D[(int)b[0]][(int)a[0]] = j;

}
scanf("%s", alfa);
scanf("%s", beta);
//fclose(f);



//printf("alfa:%s \nbeta:%s\n\n", alfa, beta);

//find sum
int p,vp = 0, h = strlen(beta), l=strlen(alfa);
for(p =0, i = 0; i < h; i++){

  if(alfa[p] == beta[i]){
      //printf("SAME %i %i \n", p, i);
      p++;
  }
  else{
      if(D[(int)alfa[p]][(int)beta[i]] != 0){
          //update
          sum+=D[(int)alfa[p]][(int)beta[i]];
          //printf("UPDA %i %i \n", p, i);
          p++;
      }
      else{
          razl+=100;
          //insert
          sum+=V[(int)beta[i]];
          //printf("INSE %i %i \n", p, i);
          vp++;
      }
  }

}

if(vp <= abs(h-l)){ sum+=100*abs((abs(h-l)-vp)); //printf("ADD more %i !\n", abs(h-l)-vp);
}
printf("%i", sum);
//system("PAUSE");
return 0;
}
