/*
TASK:gen
LANG:C++
*/
#include<iostream>
#include<string.h>
#define MN 101
using namespace std;
int n,m,p,br;
char b[MN],a[MN],w[MN];

struct small
{char x,y;}q[MN];

struct big
{ char x,y,z;}t[MN];
void vhod()
{int i,j;
 cin>>a>>n;
 p=strlen(a);
 for(i=1;i<=n;i++)
     cin>>q[i].x>>q[i].y;
 cin>>m;
 for(i=1;i<=m;i++)
     cin>>t[i].x>>t[i].y>>t[i].z;
}
void red(int i,char c[MN])
{int j,k,l;
 char sv[MN];
 k=strlen(c);
 for(j=0;j<k;j++)
  sv[j]=c[j];
 for(j=i;j<k-1;j++)
    c[j]=c[j+1];
 c[k-1]=NULL;
 void solve(char c[MN]);
 solve(c);
 for(j=0;j<k;j++)
  c[j]=sv[j];

}
void solve(char c[MN])
{int i,j,k;
  k=strlen(c);
  if(k==1)
   {int lam=0;
    for(i=0;i<br;i++)
     if(c[0]==w[i])lam++;
     if(lam==0)w[br++]=c[0];
     return;
   }
   for(i=1;i<=k;i++)
     for(j=1;j<=m;j++)
       if(c[i-1]==t[j].y&&c[i]==t[j].z)
         {c[i-1]=t[j].x;
          red(i,c);
          c[i-1]=t[j].y;
         }
}
void gen(int i)
{int j;
 char c[MN];
 c[p]=NULL;
 if(i==p)
   {for(j=0;j<p;j++)
      c[j]=b[j];
    solve(c);
    return;
    }
 for(j=1;j<=n;j++)
    if(a[i]==q[j].y)
      {b[i]=q[j].x;
       gen(i+1);
      }
}
int main()
{vhod();
 gen(0);
 int i,j,s;
 if(br<1)cout<<br;
 else
 {for(i=0;i<br;i++)
   for(j=i+1;j<br;j++)
     if(w[i]>w[j])
      {s=w[i];w[i]=w[j];w[j]=s;}
    for(i=0;i<br;i++)
      cout<<w[i];
  }
  cout<<endl;
 return 0;
}

