type
chararray=array[1..7]?of?char;
var
q:chararray;
i,j,k:integer;
min:longint;
smin:string;
procedure?next(t:integer;s:string);?{t為步數,s為以空格為中心的移入記錄}
var
i,j,k:integer;
q0:chararray;
s0:string;
{最少步數必定為白棋只向右移動,黑棋只向左移動}
begin
for?i:=1?to?7?do?write(q[i]:1);?writeln;
if?(q[1]='B')and(q[2]='B')and(q[3]='B')and
(q[5]='W')and(q[6]='W')and(q[7]='W')?then
begin
if?t<min?then?begin?min:=t;?smin:=s;?end;
end
else
begin
for?i:=1?to?7?do?if?q[i]='?'?then?begin
str(i:0,s0);
if?(i-1>=1)and(q[i-1]='W')?then?begin?
q0:=q;?{保存數組,以便還原}
q[i-1]:='?';?
q[i]:='W';?
next(t+1,s+s0+'L1?');?
q:=q0;?{回溯}
end;
if?(i+1<=7)and(q[i+1]='B')?then?begin?
q0:=q;?
q[i+1]:='?';?
q[i]:='B';?
next(t+1,s+s0+'R1?');?
q:=q0;?
end;
if?(i-2>=1)and(q[i-2]='W')and(q[i-1]='B')?then?begin
q0:=q;?
q[i-2]:='?';?
q[i]:='W';?
next(t+1,s+s0+'L2?');?
q:=q0;?
end;
if?(i+2<=7)and(q[i+2]='B')and(q[i+1]='W')?then?begin
q0:=q;?
q[i+2]:='?';?
q[i]:='B';?
next(t+1,s+s0+'R2?');?
q:=q0;?
end;
end;
end;
end;
begin
for?i:=1?to?3?do?q[i]:='W';
q[4]:='?';
for?i:=5?to?7?do?q[i]:='B';
min:=99999;
next(0,'');
writeln(min);
writeln(smin);
end.