program e;

var
	pole:array[1..8, 1..8] of char;

procedure fill(charset: integer);
var
	s: string;
	i: integer;
	n: integer;
	c: char;
	fig: char;
	col: char;
	row: integer;
begin
	readln(s);
	i := 8;
	n := length(s);
	while (i<=n) do begin
		col := s[i];
		inc(i);
		if col in ['a'..'z'] then fig:='P'
		else begin
			fig := col;
			col := s[i];
			inc(i);
		end;
		row := ord(s[i])-ord('0');
		inc(i);
		{writeln(fig,col,row);}
		if (charset<>0) then fig:=chr(ord(fig)-ord('A')+ord('a'));
		pole[row, ord(col)-ord('a')+1] := fig;
		row := ord(s[i]); (* ',' *)
		inc(i);
	end;
end;

var
	r, c: integer;
	lichy: boolean;
	dummy: char;
	ch: char;
	i: integer;

begin
	for r:=1 to 8 do for c:=1 to 8 do pole[r,c]:=' ';
	
	fill(0);
	fill(1);
	
	for r:=8 downto 1 do begin
		writeln('+---+---+---+---+---+---+---+---+');
		for c:=1 to 8 do begin
			lichy:=((r xor c) and 1)=1;
			if (lichy) then dummy:='.' else dummy:=':';
			ch := pole[r,c];
			if (ch=' ') then ch:=dummy;
			write('|', dummy, ch, dummy);
		end;
		writeln('|');
	end;
	writeln('+---+---+---+---+---+---+---+---+');
end.
