#include<bits/stdc++.h>
using namespace std;
int w,i1,n,g;
int f[501][501][10];
string s;
map<string,int> mpw;
map<string,int> mpi;
map<string,int> mpn;
map<string,int> mpg;
string zh(int x)
{
if(x==1) return "W";
else if(x==2) return "I";
else if(x==3) return "N";
else return "G";
}
int main()
{
cin>>w>>i1>>n>>g;
for(int i=1;i<=w;i++)
{
string a;
cin>>a;
mpw[a]=1;
}
for(int i=1;i<=i1;i++)
{
string a;
cin>>a;
mpi[a]=1;
}
for(int i=1;i<=n;i++)
{
string a;
cin>>a;
mpn[a]=1;
}
for(int i=1;i<=g;i++)
{
string a;
cin>>a;
mpg[a]=1;
}
cin>>s;
s=" "+s;
int lens=s.size();
for(int i=1;i<lens-1;i++){
int j=i+1;
string b=s.substr(i,2);
if(mpw[b]) f[i][j][1]=1;
if(mpi[b]) f[i][j][2]=1;
if(mpn[b]) f[i][j][3]=1;
if(mpg[b]) f[i][j][4]=1;
}
for(int len=3;len<lens;len++)
{
for(int i=1;i+len-1<lens;i++)
{
int j=i+len-1;
for(int k=i;k<j;k++)
{
for(int i2=1;i2<=4;i2++)
{
for(int j1=1;j1<=4;j1++)
{
if(f[i][k][i2]&&f[k+1][j][j1])
{
string ii,jj;
ii=zh(i2),jj=zh(j1);
ii+=jj;
if(mpw[ii]) f[i][j][1]=1;
if(mpi[ii]) f[i][j][2]=1;
if(mpn[ii]) f[i][j][3]=1;
if(mpg[ii]) f[i][j][4]=1;
}
}
}
}
}
}
lens--;
bool flag=0;
if(f[1][lens][1])
{
cout<<"W";
flag=1;
}
if(f[1][lens][2])
{
cout<<"I";
flag=1;
}
if(f[1][lens][3])
{
cout<<"N";
flag=1;
}
if(f[1][lens][4])
{
cout<<"G";
flag=1;
}
if(!flag) cout<<"The name is wrong!"<<endl;
return 0;
}