program wp10zad3;

const
    ROZMIAR = 8;
    MAX_PIONOW = ROZMIAR * ROZMIAR;
    ZNAK_BIALEGO = 'b';
    ZNAK_CZARNEGO = 'c';
    ZNAK_PUSTEGO = '-';
    BIALY = -1;
    PUSTE = 0;
    CZARNY = 1;

type
    Gracz = BIALY .. CZARNY;
    PozycjaNaPlanszy = 0 .. ROZMIAR * (ROZMIAR + 2) - 1;
    NumerPiona = -MAX_PIONOW .. MAX_PIONOW;
    Kierunek = -1 .. 1;

var plansza : array [PozycjaNaPlanszy] of NumerPiona;
    pozycje : array [NumerPiona] of PozycjaNaPlanszy;
    ostatni : array [Gracz] of NumerPiona;

procedure wczytaj;
var i, j, aktualna : Integer;
    c : Char;
    kto : Gracz;
begin
    for i := BIALY to CZARNY do
        ostatni[i] := 0;
    aktualna := 1;
    for i := 1 to ROZMIAR do begin
        plansza[aktualna - 1] := PUSTE;
        for j := 1 to ROZMIAR do begin
            read(c);
            kto := ord(c = ZNAK_CZARNEGO) - ord(c = ZNAK_BIALEGO);
            assert((kto = PUSTE) = (c = ZNAK_PUSTEGO));
            assert((kto <> BIALY) or (i <> 1));
            assert((kto <> CZARNY) or (i <> ROZMIAR));
            inc(ostatni[kto], kto);
            plansza[aktualna] := ostatni[kto];
            pozycje[plansza[aktualna]] := aktualna;
            inc(aktualna)
        end;
        assert(eoln);
        readln;
        plansza[aktualna] := PUSTE;
        inc(aktualna, 2)
    end;
    assert(eof)
end;

function wygraRuchem(kto : Gracz; czym: NumerPiona; jak : Kierunek;
                     zmianaRzedu : Integer; cel : Integer) : Boolean;
var docelowe : Integer;
    skad, pozycjaOstatniego : PozycjaNaPlanszy;
    ostatniPrzeciwnika, naDocelowym, pionPrzeciwnika : NumerPiona;
    przeciwnikMozeWygrac : Boolean;
    ruchPrzeciwnika : Kierunek;
begin
    wygraRuchem := false;
    skad := pozycje[czym];
    docelowe := skad + zmianaRzedu + jak;
    naDocelowym := plansza[docelowe];
    if (jak = 0) and (naDocelowym = PUSTE) or
            (jak <> 0) and (naDocelowym * czym < 0) then
        if docelowe div (ROZMIAR + 2) = cel then
            wygraRuchem := true
        else begin
            plansza[skad] := PUSTE;
            pozycje[czym] := docelowe;
            if jak <> 0 then begin
                ostatniPrzeciwnika := ostatni[-kto];
                pozycjaOstatniego := pozycje[ostatniPrzeciwnika];
                plansza[pozycjaOstatniego] := naDocelowym;
                pozycje[naDocelowym] := pozycjaOstatniego;
                Dec(ostatni[-kto], -kto)
            end;
            plansza[docelowe] := czym;
            ruchPrzeciwnika := -1;
            pionPrzeciwnika := ostatni[-kto];
            przeciwnikMozeWygrac := false;
            while not przeciwnikMozeWygrac and (pionPrzeciwnika <> 0) do begin
                przeciwnikMozeWygrac := wygraRuchem(-kto, pionPrzeciwnika,
                    ruchPrzeciwnika, -zmianaRzedu, 7 - cel);
                ruchPrzeciwnika := (ruchPrzeciwnika + 2) mod 3 - 1;
                if ruchPrzeciwnika = -1 then
                    inc(pionPrzeciwnika, kto)
            end;
            wygraRuchem := not przeciwnikMozeWygrac;
            if jak <> 0 then begin
                inc(ostatni[-kto], -kto);
                plansza[pozycjaOstatniego] := ostatniPrzeciwnika;
                pozycje[naDocelowym] := docelowe
            end;
            plansza[docelowe] := naDocelowym;
            pozycje[czym] := skad;
            plansza[skad] := czym
        end
end;

procedure wypisz;
var i, j, k, aktualna : Integer;
    pion : NumerPiona;
    kod : 0 .. 7;
begin
    aktualna := 1;
    for i := 1 to ROZMIAR do begin
        for j := 1 to ROZMIAR do begin
            pion := plansza[aktualna];
            inc(aktualna);
            if pion > 0 then
                write(ZNAK_CZARNEGO)
            else if pion = 0 then
                write(ZNAK_PUSTEGO)
            else begin
                kod := 0;
                for k := -1 to 1 do
                    kod := 2 * kod + ord(wygraRuchem(BIALY, pion, k,
                                                     -(ROZMIAR + 2), 0));
                write(kod)
            end
        end;
        inc(aktualna, 2);
        writeln
    end
end;

begin
    wczytaj;
    wypisz
end.
