{
TASK: LDIST
LANG: PASCAL
}

var
  v1: array[1..2000] of Char;
  v2: array[1..2000] of Integer;
  d1,d2: array[1..2000] of Char;
  d3: array[1..2000] of Integer;
  t: Char;
  s1,s2: String;
  n,m,i,j,k: Integer;
  p,q,sum: Integer;
  fl: Boolean;

begin
  readln(p);
  for i:= 1 to p do
    readln(v1[i],v2[i]);
  readln(q);
  for i:= 1 to q do
  begin
    read(t);
    d1[i]:= t;
    read(t); read(t);
    d2[i]:= t;
    readln(d3[i]);
  end;
  readln(s1);
  readln(s2);
  sum:= 0; i:= 1; j:= 1;
  n:= length(s1); m:= length(s2);
  repeat
    fl:= false;
    if s1[i]<>s2[j] then
    begin
      for k:= 1 to q do
        if ((d1[k]=s1[i]) and (d2[k]=s2[j])) or ((d1[k]=s2[j]) and (d2[k]=s1[i])) then
        begin
          s1[i]:= s2[j];
          sum:= sum+d3[k];
          fl:= true;
        end;
      if fl=false then
        if s1[i]=s2[j+1] then
          sum:= sum+100;
    end;
    fl:= false;
    if (s1[i]<>s2[j]) and ((s1[i]=s2[j+1]) or (i=n)) then
    begin
      for k:= 1 to p do
        if v1[k]=s2[i] then
        begin
          sum:= sum+v2[k];
          i:= i-1;
          fl:= true;
        end;
      if fl=false then
        if s1[i]=s2[j+1] then
        begin
          sum:= sum+100;
          i:= i-1;
        end;
    end;
    i:= i+1; j:= j+1;
  until j=m;
  if m>n then
    sum:= sum+100*(m-n-1);
  if n>m then
    sum:= sum-100*(n-m-1);
  writeln(sum);
end.