#include<bits/stdc++.h>
using namespace std;
int n,m;
char ma[105][105];
map<char,char>mp;
void dfs(int x,int y)
{
if(y>m)y=1,x++;
if(ma[x][y]=='-')dfs(x,y+1);
if(x>n)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)printf("%c",ma[i][j]);
puts("");
}
exit(0);
}
if(x==1&&y==1)
{
ma[x][y]='B',dfs(x,y+1),ma[x][y]='.';
ma[x][y]='W',dfs(x,y+1),ma[x][y]='.';
}
else if(x==1)
if(ma[x][y-1]=='-')
{
ma[x][y]='B',dfs(x,y+1),ma[x][y]='.';
ma[x][y]='W',dfs(x,y+1),ma[x][y]='.';
}
else ma[x][y]=mp[ma[x][y-1]],dfs(x,y+1),ma[x][y]='.';
else if(y==1)
if(ma[x-1][y]=='-')
{
ma[x][y]='B',dfs(x,y+1),ma[x][y]='.';
ma[x][y]='W',dfs(x,y+1),ma[x][y]='.';
}
else ma[x][y]=mp[ma[x-1][y]],dfs(x,y+1),ma[x][y]='.';
else
if(ma[x-1][y]=='-'&&ma[x][y-1]=='-')
{
ma[x][y]='B',dfs(x,y+1),ma[x][y]='.';
ma[x][y]='W',dfs(x,y+1),ma[x][y]='.';
}
else if(ma[x-1][y]=='-')ma[x][y]=mp[ma[x][y-1]],dfs(x,y+1),ma[x][y]='.';
else if(ma[x][y-1]=='-')ma[x][y]=mp[ma[x-1][y]],dfs(x,y+1),ma[x][y]='.';
else if(ma[x][y-1]!=ma[x-1][y])return;
else ma[x][y]=mp[ma[x-1][y]],dfs(x,y+1),ma[x][y]='.';
}
int main()
{
scanf("%d%d",&n,&m);
mp['B']='W',mp['W']='B';
for(int i=1;i<=n;i++)scanf("%s",ma[i]+1);
dfs(1,1);
}
WA 第5个点