/*
2996的逆
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<map>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<functional>
using namespace std;
const int INF=(1<<31)-1;
const double EPS=1e-8;
char chess[10][50];
char black[8]="kqrbnp";
char white[8]="KQRBNP";
char line_t[50]="+---+---+---+---+---+---+---+---+";
char line[100];
void setChar(int type,int pos,int r,int c)
{
if(type==0)
chess[r][2+4*(c-1)]=white[pos];
else
chess[r][2+4*(c-1)]=black[pos];
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int i,j,k;
char steven[3]=":.";
for(i=1;i<=8;i++)
{
chess[i][0]='|';
for(j=1,k=1;j<=33;j+=4,k++)
{
if(i&1)
{
if(k&1)
{
chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[0];
}
else
{
chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[1];
}
}
else
{
if(k&1)
{
chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[1];
}
else
{
chess[i][j]=chess[i][j+1]=chess[i][j+2]=steven[0];
}
}
chess[i][j+3]='|';
}
chess[i][33]=0;
}
for(int q=0;q<2;q++)
{
gets(line);
if(line[0]=='W')
{
for(int i=7;i<strlen(line);)
{
bool flag=true;
for(int k=0;k<5;k++)
{
if(line[i]==white[k])
{
setChar(0,k,line[i+2]-'1'+1,line[i+1]-'a'+1);
i+=4;
flag=false;
}
}
if(flag)
{
if(line[i]>='a'&&line[i+1]<'h')
{
setChar(0,5,line[i+1]-'1'+1,line[i]-'a'+1);
}
i+=3;
}
}
}
else if(line[0]=='B')
{
for(int i=7;i<strlen(line);)
{
bool flag=true;
for(int k=0;k<5;k++)
{
if(line[i]==white[k])
{
setChar(1,k,line[i+2]-'1'+1,line[i+1]-'a'+1);
i+=4;
flag=false;
}
}
if(flag)
{
if(line[i]>='a'&&line[i+1]<'h')
{
setChar(1,5,line[i+1]-'1'+1,line[i]-'a'+1);
}
i+=3;
}
}
}
}
printf("%s/n",line_t);
for(int i=8;i>=1;i--)
{
cout<<chess[i]<<endl;
printf("%s/n",line_t);
}
system("pause");
return 0;
}