#include <iostream>
#include <fstream>
#include <map>
#include <vector>
#include <set>
using namespace std;
map <char, int> m; //用map來記錄出現的英文字母(腦區域)和對應的array index
int Count = 0;
int Find(char c){ //回傳該字母的array index, 若該字母首次出現, 則安排新index
map<char, int>::iterator iter;
iter = m.find(c);
if(iter != m.end())
return iter->second;
else{
m[c] = Count;
return Count++;
}
}
int main(){
int N;
while(cin >> N){
m.clear();
Count = 0;
int cmd;
cin >> cmd;
string init;
cin >> init;
int brain[N][N]; //紀錄大腦各區域
set<int> wake; //紀錄已經wake的區域
for(int i = 0; i<N; i++){ //大腦array初始化 -1:未聯通 0:連通但沒有wake 1:連通且wake
for(int j = 0; j<N; j++)
brain[i][j] = -1;
}
for(char c : init){ //紀錄直接喚醒的區域
int t = Find(c);
brain[t][t] = 1; //brain[t][t]紀錄t區域本身是否wake 1代表wake
wake.insert(t);
}
while(cmd--){ //紀錄倆倆連結的區域
string s;
cin >> s;
int a = Find(s[0]);
int b = Find(s[1]);
if(wake.count(a) || wake.count(b)){
brain[a][b] = 1;
brain[b][a] = 1;
}
else{
brain[a][b] = 0;
brain[b][a] = 0;
}
}
int wake_num = init.length(), year = 0;
bool check = true;
//如果wake數量等於區域數量就break;或該年沒有區域wake也break;
while(wake_num < N && check){
vector<int> temp; //紀錄該年wake的區域
check = false;
for(int i = 0; i<N; i++){
if(brain[i][i] == -1){ //沒有wake的區域
int connect = 0;
for(int j = 0; j<N; j++){ //紀錄連結幾個已wake的區域
if(brain[i][j] == 1)
connect++;
}
if(connect >= 3){
wake_num++;
check = true;
brain[i][i] = 1;
temp.push_back(i);
}
}
}
for(int i : temp){ //修改該年wake區域和其他區域的關係
for(int j = 0; j<N; j++){
if(brain[i][j] == 0)
brain[i][j] = 1;
if(brain[j][i] == 0)
brain[j][i] = 1;
}
}
year++;
}
if(wake_num == N)
cout << "WAKE UP IN, " << year << ", YEARS\\n";
else
cout << "THIS BRAIN NEVER WAKES UP\\n";
}
return 0;
}