{
TASK: gen
LANG: PASCAL
}
{$R-}
Const
maxN = 101;
var
a1 : array[1..maxN] of string[2];
a2 : array[1..maxN] of string[3];
ans : array['A'..'Z'] of boolean;
b : array[1..maxN] of char;
s : string;

br, i, j, k, l, n, m : longint;
ch1, ch2 : char;

Procedure Recur(len : byte);
var
i, k : longint;
begin
if len=2 then
  begin
    for i:=1 to n do
      if (copy(a2[i], 2, 2)=s) and (not ans[a2[i][1]]) then
        begin
          inc(br);
          ans[a2[i][1]]:=true;
        end;
  end
else
  begin
    for i:=1 to m do
      begin
        k:=pos(a1[i][2], s);
        if k<>0 then
          begin
            delete(s, k, 1);
            insert(a1[i][1], s, k);
            Recur(len);
            delete(s, k, 1);
            insert(a1[i][2], s, k);
          end;
        end;
    for i:=1 to n do
      begin
        k:=pos(Copy(a2[i], 2, 2), s);
        if k<>0 then
          begin
            delete(s, k, 2);
            insert(a2[i][1], s, k);
            Recur(len-1);
            delete(s, k, 1);
            insert(Copy(a2[i], 2, 2), s, k);
          end;
       end;
  end;
End;

Begin
readln(s);
readln(m);
for i:=1 to m do
  readln(a1[i]);
readln(n);
for i:=1 to n do
  readln(a2[i]);


Recur(Length(s));
if br=0 then write(0)
else
  for ch1:='A' to 'Z' do
    if ans[ch1] then
      write(ch1);
writeln;
end.