{
TASK:ldist
LANG:pascal
}
type
masi2 = record
 a:char;
 st:integer;
 end;
masi3= record
 a:char;
 a2:char;
 st:integer;
 end;
masiv2 = array[1..100]of masi2;
masiv3 = array[1..100]of masi3;
procedure update(var m,t:char;q:integer;var val:integer;var D:masiv3);
var
i:integer;
begin
for i:=1 to q do
 if ((m=D[i].a)and(t=D[i].a2))or((t=D[i].a)and(m=D[i].a2)) then  begin val:=val+D[i].st;t:=m;end;
                                                      end;
var
p,q,j,i,val:integer;
V:masiv2;
D:masiv3;
A,C:string;
begin
readln(p);
for i:=1 to p do
readln(V[i].a,V[i].st);
readln(q);
for i:=1 to q do
readln(D[i].a,D[i].a2,D[i].st);
readln(A);
readln(C);
i:=0;
for j:=1 to p do
  for i:=1 to length(C) do
     if V[j].a=C[i] then delete(C,i,1);
for i:=1 to length(A) do
if A[i]<>C[i] then update(A[i],C[i],q,val,D);
write(val);
end.