#include <stdio.h>
#include<iostream>
#include<cmath>
#include <string.h>
using namespace std;
#define maxn 6
char s[maxn][maxn]={"TRGSJ","XDOKI","M VLN","WPABE","UQHCF"};
char input[85];
int arrtop=2; // 行
int arrleft=1; // 列
int A(){ //上
if(arrtop>0){
s[arrtop][arrleft]=s[arrtop-1][arrleft];
arrtop-=1;
s[arrtop][arrleft]=' ';
}
else{
return 0;
}
return 1;
}
int B(){ //下
if(arrtop<maxn-2){
s[arrtop][arrleft]=s[arrtop+1][arrleft];
arrtop+=1;
s[arrtop][arrleft]=' ';
}
else{
return 0;
}
return 1;
}
int L(){ //左
if(arrleft>0){
s[arrtop][arrleft]=s[arrtop][arrleft-1];
arrleft-=1;
s[arrtop][arrleft]=' ';
}else{
return 0;
}
return 1;
}
int R(){ //右
if(arrleft<maxn-2){
s[arrtop][arrleft]=s[arrtop][arrleft+1];
arrleft+=1;
s[arrtop][arrleft]=' ';
}else{
return 0;
}
return 1;
}
int main(){
cin>>input;
int k=0;
int tag=1;
while(input[k]!='0'){
switch(input[k]){
case 'A':tag=A();break;
case 'B':tag=B();break;
case 'L':tag=L();break;
case 'R':tag=R();break;
default:
cout<<"This puzzle has no final configuration."<<endl;break;
}
if(!tag)
break;
k++;
}
if(tag){
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
cout<<s[i][j]<<"\t";
}
cout<<endl;
}
} else{
cout<<"This puzzle has no final configuration."<<endl;
}
return 0;
}