#include<bits/stdc++.h>
using namespace std;
char str[210];
int a,b,c,d,n = 0,m[210];
int dp[210][210][4];
int mp[4][4][4];
int transf(char x){
if(x == 'W') return 0;
if(x == 'I') return 1;
if(x == 'N') return 2;
if(x == 'G') return 3;
}
char transb(int x){
if(x == 0) return 'W';
if(x == 1) return 'I';
if(x == 2) return 'N';
if(x == 3) return 'G';
}
int main(){
char x,y;
cin >> a >> b >> c >> d;
for(int i = 1;i <= a;i++){
cin >> x >> y;
mp[transf(x)][transf(x)][0] = 1;
}
for(int i = 1;i <= b;i++){
cin >> x >> y;
mp[transf(x)][transf(y)][1] = 1;
}
for(int i = 1;i <= c;i++){
cin >> x >> y;
mp[transf(x)][transf(y)][2] = 1;
}
for(int i = 1;i <= d;i++){
cin >> x >> y;
mp[transf(x)][transf(y)][3] = 1;
}
cin >> str + 1;
for(int i = 1;str[i] != 0;i++){
m[i] = transf(str[i]);
dp[i][i][m[i]] = 1;
n++;
}
for(int i = 2;i <= n;i++){
for(int j = 1;j <= n-i+1;j++){
int r = j + i - 1;
for(int k = j;k < r;k++){
for(int p = 0;p < 4;p++){
for(int q = 0;q < 4;q++){
for(int s = 0;s < 4;s++){
if(mp[q][s][p]){
if(dp[j][k][q] && dp[k+1][r][s]) dp[j][r][p] = 1;
}
}
}
}
}
}
}
int flag = 1;
for(int i = 0;i < 4;i++){
if(dp[1][n][i]){
cout << transb(i);
flag = 0;
}
}
if(flag) cout << "The name is wrong!";
return 0;
}