#include <stdio.h>
#include<string.h>
char s[6][6],str[100000];
int main()
{
int p=0;
while(1)
{
char s[6][6]={'\0'};
p++;
int i,j,k,t,m,flag=1;
for(i=0;i<5;i++)
{
gets(s[i]);
if((s[0][0]=='Z'&&s[0][1]=='\0')||(s[1][0]=='Z'&&s[1][1]=='\0')||(s[2][0]=='Z'&&s[2][1]=='\0')||(s[3][0]=='Z'&&s[3][1]=='\0')||(s[4][0]=='Z'&&s[4][1]=='\0')) return 0;
}
gets(str);
for(i=0;i<strlen(str);i++)
{
if(str[i]!='0')
{
for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{
if(s[j][k]==' ')
{
m=j;
t=k;
}
}
}
if(str[i]=='A'&&m-1>=0)
{
s[m][t]=s[m-1][t];
s[m-1][t]=' ';
}
else if(str[i]=='B'&&m+1<5)
{
s[m][t]=s[m+1][t];
s[m+1][t]=' ';
}
else if(str[i]=='L'&&t-1>=0)
{
s[m][t]=s[m][t-1];
s[m][t-1]=' ';
}
else if(str[i]=='R'&&t+1<5)
{
s[m][t]=s[m][t+1];
s[m][t+1]=' ';
}
else
{
flag=0;
break;
}
}
else
break;
}
if(flag==0)
{
printf("Puzzle #%d: \n",p);
printf("This puzzle has no final configuration.\n");
}
else
{
printf("Puzzle #%d: \n",p);
for(i=0;i<5;i++)
{
printf("%s\n",s[i]);
}
}
}
return 0;
}