//Twofive - IOI
#include <iostream>
#include <string>
#include <vector>
#include <set>
using namespace std;
const int MAXN = 100000000;
string ans[26];
string palavra[26];
string maybe[26];
pair<bool,bool> deucerto[26];
bool mark[26];
int n,qtd;
string s;
char c;
set<int> conjunto;
bool achapalavras(int letra){
if(letra == 25){
qtd++;
int atual = 25;
palavra[atual] = (char)('A' + letra - 1);
if(c == 'W'){
bool top = true;
for(int i=1; i<=25; i++) if(maybe[i] != palavra[i]) top = false;
if(top){
cout << qtd << "\n";
return true;
}
}
if(c == 'N'){
if(qtd == n){
for(int i=1; i<=25; i++){
ans[i] = palavra[i];
cout << ans[i];
}
cout << "\n";
return true;
}
}
return false;
}
/*
while(!fila.empty()){
cout << fila.front() << " ";
aux.push(fila.front());
fila.pop();
}
cout << endl;
while(!aux.empty()){
fila.push(aux.front());
aux.pop();
}
*/
vector<int> aux;
for(set<int>::iterator it = conjunto.begin(); it != conjunto.end(); it++) aux.push_back(*it);
for(int i=0; i<aux.size(); i++){
int atual = aux[i];
conjunto.erase(atual);
bool ok1 = false, ok2 = false;
bool daverdade;
if(atual+1 <= 25){
deucerto[atual+1].first = true;
if(deucerto[atual+1].first && deucerto[atual+1].second && !mark[atual+1]){
mark[atual+1] = true;
ok1 = true;
}
}
if(atual+5 <= 25){
deucerto[atual+5].second = true;
if(deucerto[atual+5].first && deucerto[atual+5].second && !mark[atual+5]){
mark[atual+5] = true;
ok2 = true;
}
}
palavra[atual] = (char)('A' + letra - 1);
if(ok1 && !ok2){
conjunto.insert(atual+1);
daverdade = achapalavras(letra+1);
conjunto.erase(atual+1);
mark[atual+1] = false;
}else if(!ok1 && ok2){
conjunto.insert(atual+5);
daverdade = achapalavras(letra+1);
conjunto.erase(atual+5);
mark[atual+5] = false;
}else if(ok1 && ok2){
conjunto.insert(atual+1);
conjunto.insert(atual+5);
daverdade = achapalavras(letra+1);
conjunto.erase(atual+1);
conjunto.erase(atual+5);
mark[atual+1] = mark[atual+5] = false;
}else{
daverdade = achapalavras(letra+1);
}
if(daverdade) return true;
conjunto.insert(atual);
}
return false;
}
int main(){
cin >> c;
if(c == 'W'){
cin >> s;
for(int i=0; i<s.size(); i++){
maybe[i+1] = s[i];
}
}
if(c == 'N') cin >> n;
//Inicialização
for(int i=1; i<=5; i++) deucerto[i].second = true;
for(int i=1; i<=25; i+=5) deucerto[i].first = true;
mark[1] = true;
conjunto.insert(1);
bool sla = achapalavras(1);
return 0;
}