#include<bits/stdc++.h>
using namespace std;
int n,ccs,a[27];
char ch[1000001][3];
string s,s0,s1,s2,s3;
void dfs(int cs,string ss0,string ss1,string ss2,string ss3)
{
string ssss;
if(cs>ccs)
return;
if(ss3==s)
{
for(int i=1;i<=cs;i++)
cout<<ch[i][0]<<' '<<ch[i][1]<<' '<<ch[i][2]<<endl;
exit(0);
}
if(!ss0.empty())
{
ch[cs][0]=ss0[ss0.size()-1],ch[cs][1]='A';
ss0.erase(ss0.size()-1,1);
if(s[s.size()-ss3.size()-1]==ch[cs][0])
{
ch[cs][2]='D';
ssss=ch[cs][0];
ss3.insert(0,ssss);
dfs(cs+1,ss0,ss1,ss2,ss3);
ss3.erase(0,1);
}else
{
ch[cs][2]='B';
dfs(cs+1,ss0,ss1+ch[cs][0],ss2,ss3);
if(a[ch[cs][0]-'a']>a[ss2[ss2.size()-1]-'a'])
{
ch[cs][2]='C';
dfs(cs+1,ss0,ss1,ss2+ch[cs][0],ss3);
}
}
ss0+=ch[cs][0];
}
if(!ss1.empty())
{
ch[cs][0]=ss1[ss1.size()-1],ch[cs][1]='B';
ss1.erase(ss1.size()-1,1);
if(s[s.size()-ss3.size()-1]==ch[cs][0])
{
ch[cs][2]='D';
ssss=ch[cs][0];
ss3.insert(0,ssss);
dfs(cs+1,ss0,ss1,ss2,ss3);
ss3.erase(0,1);
}else
if(a[ch[cs][0]-'a']>a[ss2[ss2.size()-1]-'a'])
{
ch[cs][2]='C';
dfs(cs+1,ss0,ss1,ss2+ch[cs][0],ss3);
}
ss1+=ch[cs][0];
}
if(!ss2.empty())
{
ch[cs][0]=ss2[ss2.size()-1],ch[cs][1]='C';
ss2.erase(ss2.size()-1,1);
if(s[s.size()-ss3.size()-1]==ch[cs][0])
{
ch[cs][2]='D';
ssss=ch[cs][0];
ss3.insert(0,ssss);
dfs(cs+1,ss0,ss1,ss2,ss3);
ss3.erase(0,1);
}
ss2+=ch[cs][0];
}
}
int main()
{
cin>>n>>s;
for(int i=1;i<=n;i++)
a[s[i-1]-'a']=n-i+1;
for(int i=1;i<=n;i++)
s0+=char(i+'a'-1);
for(int i=n;i<=3*n;i++)
ccs=i,dfs(1,s0,s1,s2,s3);
printf("NO");
return 0;
}