program dd;

type    Obrazy = array [0..10,1..7] of String;
        Obraz = array [1..5,1..7] of Char;
        ObrazTime = array [1..4] of Obraz;
        Cas = array [1..5] of Integer;
        Riadky = array [1..7] of String;
        Tuple = array [1..2] of Integer;
        Vect = array [0..9] of Boolean;
        Maybe = record
                je : Boolean;
                cas: Cas;
        end;

var     vstupy : Riadky;
        i : Integer;
        answer : Cas;

const obr : Obrazy =
        (('+---+'
         ,'|   |'
         ,'|   |'
         ,'+   +'
         ,'|   |'
         ,'|   |'
         ,'+---+'
         )
        ,('    +'
         ,'    |'
         ,'    |'
         ,'    +'
         ,'    |'
         ,'    |'
         ,'    +'
         )
        ,('+---+'
         ,'    |'
         ,'    |'
         ,'+---+'
         ,'|    '
         ,'|    '
         ,'+---+'
         )
        ,('+---+'
         ,'    |'
         ,'    |'
         ,'+---+'
         ,'    |'
         ,'    |'
         ,'+---+'
         )
        ,('+   +'
         ,'|   |'
         ,'|   |'
         ,'+---+'
         ,'    |'
         ,'    |'
         ,'    +'
         )
        ,('+---+'
         ,'|    '
         ,'|    '
         ,'+---+'
         ,'    |'
         ,'    |'
         ,'+---+'
         )
        ,('+---+'
         ,'|    '
         ,'|    '
         ,'+---+'
         ,'|   |'
         ,'|   |'
         ,'+---+'
         )
        ,('+---+'
         ,'    |'
         ,'    |'
         ,'    +'
         ,'    |'
         ,'    |'
         ,'    +'
         )
        ,('+---+'
         ,'|   |'
         ,'|   |'
         ,'+---+'
         ,'|   |'
         ,'|   |'
         ,'+---+'
         )
        ,('+---+'
         ,'|   |'
         ,'|   |'
         ,'+---+'
         ,'    |'
         ,'    |'
         ,'+---+'
         )
        ,(' '
         ,' '
         ,'o'
         ,' '
         ,'o'
         ,' '
         ,' '
         )
        );

{ -- Procedures and Functions -- }

function fromTime(vstup : Cas) : String;
var     vystup : String;
        i : Integer;
begin
        vystup := '';
        for i := 1 to 5 do begin
                vystup := concat(vystup,chr(vstup[i] + ord ('0')));
        end;
        fromTime := vystup;
end;

function overPismeno (vstup : Obraz) : Vect;
var     j, k, n : Integer;
        vystup : Vect;
        match : Boolean;
begin
        for j := 0 to 9 do begin
                vystup[j] := False;
        end;
        for n := 0 to 9 do begin
                match := True;
                for j := 1 to 5 do begin
                        for k := 1 to 7 do begin
                                if vstup[j][k] <> '.' then begin
                                        if vstup[j][k] <> obr[n][k][j] then begin
                                                match:= False;
                                        end;
                                end;
                        end;
                end;
                vystup[n] := match;
        end;
        overPismeno := vystup;
end;

function over(vstup : ObrazTime) : Boolean;
var     counts : array [1..4] of Tuple;
        ambigous : Boolean;
        i,j,x,c : Integer;
        vec : Vect;
        ma : Maybe;
        decoded : array [1..4] of Integer;
        count, max : Integer;
        out : Boolean;
begin
        ambigous := False;
        for i := 1 to 4 do begin
                decoded[i] := 0;
                vec := overPismeno(vstup[i]);
                count := 0;
                if i = 1 then begin
                        for x := 0 to 2 do begin
                                if vec[x] then begin
                                        count := count + 1;
                                        max := x;
                                end;
                        end;
                        if count <> 1 then ambigous := True;
                        decoded[i] := max;
                end else if (i = 2) AND (decoded[1] = 2) then begin
                        for x := 0 to 3 do begin
                                if vec[x] then begin
                                        count := count + 1;
                                        max := x;
                                end;
                        end;
                        if count <> 1 then ambigous := True;
                        decoded[i] := max;
                end else begin
                        for x := 0 to 9 do begin
                                if vec[x] then begin
                                        count := count + 1;
                                        max := x;
                                end;
                        end;
                        if count <> 1 then ambigous := True;
                        decoded[i] := max;
                end;
        end;
        c := 0;
        for i := 1 to 4 do begin
                answer[i+c] := decoded[i];
                if i = 2 then begin
                        c := 1;
                        answer[3] := 10;
                end;
        end;
        over := NOT ambigous;
end;


function spracuj(vstup: Riadky) : String;
var     {pismena : array [1..4,1..5,1..7] of Char;}
        pismena : ObrazTime;
        i,j,k : Integer;
        cor : Integer;
        cosi: Boolean;
        out : String;
begin
        cor := 0;
        for i := 1 to 4 do begin
                for j := 1 to 5 do begin
                        for k := 1 to 7 do begin
                                pismena[i][j][k] := vstup[k][(i-1)*7+cor+(j-1)+1];
                        end;
                end;
                if i = 2 then begin
                        cor := 3;
                end;
        end;
        {
        for i := 1 to 4 do begin
                for k := 1 to 7 do begin
                        for j := 1 to 5 do begin
                                write(pismena[i][j][k]);
                        end;
                        writeln;
                end;
                writeln;
        end;
        }
        cosi := over(pismena);
        if cosi then begin
                out := fromTime(answer);
        end else begin
                out := 'ambigous';
        end;
        spracuj := out;
end;

{ -- Main --}
begin
        readln(vstupy[1]);
        while vstupy[1] <> 'end' do begin
                for i := 2 to 7 do begin
                        readln(vstupy[i]);
                end;
                readln;
                readln;
                writeln(spracuj(vstupy));
                readln(vstupy[1]);
        end;
        writeln('end');
end.

