#include <bits/stdc++.h>
const int N = 205;
char c[N];
bool vis[5][5][5];
int ans[618];
int a[N];
char s[N];
int dp[N][N][N];
signed main()
{
int d1 = 'W';
int d2 = 'I';
int d3 = 'N';
int d4 = 'G';
ans[d1] = 1;
ans[d2] = 2;
ans[d3] = 3;
ans[d4] = 4;
for (int i = 1; i <= 4; i++)
{
scanf("%d" , &a[i]);
}
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= a[i]; j++)
{
char x , y;
std::cin >> x >> y;
vis[ans[x]][ans[y]][i] = 1;
}
}
scanf("%s" , &s);
int lens = strlen(s);
for (int i = 1; i <= lens; i++)
{
dp[i][i][ans[s[i - 1]]] = 1;
}
for (int j = 2; j <= lens; j++)
{
for (int i = 1; i <= lens - j + 1; j++)
{
int l = i + j - 1;
for (int k = i; k <= l - 1; k++)
{
for (int x = 1; x <= 4; x++)
{
for (int y = 1; y <= 4; y++)
{
for (int z = 1; z <= 4; z++)
{
if (dp[i][k][y] != 0 && dp[k + 1][l][z] != 0 && vis[y][z][x] != 0)
{
dp[i][l][x] = 1;
}
}
}
}
}
}
}
bool flag = 0;
if (dp[1][lens][1] != 0)
{
flag = 1;
printf("%c" , "W");
}
if (dp[1][lens][2] != 0)
{
flag = 1;
printf("%c" , "I");
}
if (dp[1][lens][3] != 0)
{
flag = 1;
printf("%c" , "N");
}
if (dp[1][lens][4] != 0)
{
flag = 1;
printf("%c" , "G");
}
if (flag == 1)
{
return 0;
}
puts("The name is wrong!");
return 0;
}