{
TASK:brkclk
LANG:PASCAL
}
program brkclk;

type
	TDigit					= Array [1 .. 7] of Integer;

var
	a, b, c, d				: TDigit;
	dig					: Array [0 .. 9] of TDigit;

procedure readInput;

procedure read_hor(j: Integer);
var
	i					: Integer;
	c1					: Char;
begin
	read(c1);
        read(c1);
	if (c1 = '.') then a[j] := -1
	else if (c1 = '-') then a[j] := 0
	else a[j] := 1;
	for i:= 1 to 3 do read(c1);

	read(c1); read(c1);
	if (c1 = '.') then b[j] := -1
	else if (c1 = '-') then b[j] := 0
	else b[j] := 1;
	for i:= 1 to 3 do read(c1);

	read(c1); read(c1);
	if (c1 = '.') then c[j] := -1
	else if (c1 = '-') then c[j] := 0
	else c[j] := 1;
	for i:= 1 to 3 do read(c1);

	read(c1); read(c1);
	if (c1 = '.') then d[j] := -1
	else if (c1 = '-') then d[j] := 0
	else d[j] := 1;
        readln;
end;

procedure read_ver(j, k: Integer);
var
	i					: Integer;
	c1					: Char;
begin
	read(c1);
	if (c1 = '.') then a[j] := -1
	else if (c1 = '|') then a[j] := 0
	else a[j] := 1;
	read(c1); read(c1);
	if (c1 = '.') then a[k] := -1
	else if (c1 = '|') then a[k] := 0
	else a[k] := 1;
	read(c1); read(c1);

	read(c1);
	if (c1 = '.') then b[j] := -1
	else if (c1 = '|') then b[j] := 0
	else b[j] := 1;
	read(c1); read(c1);
	if (c1 = '.') then b[k] := -1
	else if (c1 = '|') then b[k] := 0
	else b[k] := 1;
	read(c1); read(c1);

	read(c1);
	if (c1 = '.') then c[j] := -1
	else if (c1 = '|') then c[j] := 0
	else c[j] := 1;
	read(c1); read(c1);
	if (c1 = '.') then c[k] := -1
	else if (c1 = '|') then c[k] := 0
	else c[k] := 1;
	read(c1); read(c1);

	read(c1);
	if (c1 = '.') then d[j] := -1
	else if (c1 = '|') then d[j] := 0
	else d[j] := 1;
	read(c1); read(c1);
	if (c1 = '.') then d[k] := -1
	else if (c1 = '|') then d[k] := 0
	else d[k] := 1;

        readln;
end;

begin
	read_hor(1);
	read_ver(2, 3);
	read_hor(4);
	read_ver(5, 6);
	read_hor(7);
end;

function check(a, b: TDigit): Boolean;
var
	fnd							: Boolean;
	i							: Integer;
begin
	fnd := False;
	for i := 1 to 7 do begin
		if (a[i] = 1) and (b[i] = 0) then begin
			fnd := True;
			break;
		end else if (a[i] = 0) and (b[i] = 1) then begin
			fnd := True;
			break;
		end;
	end;
	check := not fnd;
end;

procedure Solve;
var
	apos, bpos, cpos, dpos					: Array [1 .. 10] of Integer;
	aposn, bposn, cposn, dposn				: Integer;
	one							: Boolean;
	i, m							: Integer;
begin
	FillChar(dig, sizeof(dig), 0);
	dig[0][1] := 1; dig[0][2] := 1; dig[0][3] := 1; dig[0][4] := 0; dig[0][5] := 1; dig[0][6] := 1; dig[0][7] := 1;
	dig[1][1] := 0; dig[1][2] := 0; dig[1][3] := 1; dig[1][4] := 0; dig[1][5] := 0; dig[1][6] := 1; dig[1][7] := 0;
 	dig[2][1] := 1; dig[2][2] := 0; dig[2][3] := 1; dig[2][4] := 1; dig[2][5] := 1; dig[2][6] := 0; dig[2][7] := 1;
	dig[3][1] := 1; dig[3][2] := 0; dig[3][3] := 1; dig[3][4] := 1; dig[3][5] := 0; dig[3][6] := 1; dig[3][7] := 1;
 	dig[4][1] := 0; dig[4][2] := 1; dig[4][3] := 1; dig[4][4] := 1; dig[4][5] := 0; dig[4][6] := 1; dig[4][7] := 0;
 	dig[5][1] := 1; dig[5][2] := 1; dig[5][3] := 0; dig[5][4] := 1; dig[5][5] := 0; dig[5][6] := 1; dig[5][7] := 1;
	dig[6][1] := 1; dig[6][2] := 1; dig[6][3] := 0; dig[6][4] := 1; dig[6][5] := 1; dig[6][6] := 1; dig[6][7] := 1;
	dig[7][1] := 1; dig[7][2] := 0; dig[7][3] := 1; dig[7][4] := 0; dig[7][5] := 0; dig[7][6] := 1; dig[7][7] := 0;
	dig[8][1] := 1; dig[8][2] := 1; dig[8][3] := 1; dig[8][4] := 1; dig[8][5] := 1; dig[8][6] := 1; dig[8][7] := 1;
	dig[9][1] := 1; dig[9][2] := 1; dig[9][3] := 1; dig[9][4] := 1; dig[9][5] := 0; dig[9][6] := 1; dig[9][7] := 1;

	dposn := 0;
	for i := 0 to 9 do
		if check(d, dig[i]) then begin
			dposn := dposn + 1;
			dpos[dposn] := i;
		end;
	cposn := 0; aposn := 0; bposn := 0;
	for i := 0 to 5 do
		if check(c, dig[i]) then begin
			cposn := cposn + 1;
			cpos[cposn] := i;
		end;
	one := False;
	for i := 1 to 2 do
		if check(a, dig[i]) then begin
			aposn := aposn + 1;
			apos[aposn] := i;
			if (i = 1) then one := True;
		end;
	if (one) then m := 9 else m := 3;
	for i := 0 to m do
		if check(b, dig[i]) then begin
			bposn := bposn + 1;
			bpos[bposn] := i;
		end;
	if (aposn = 1) and (bposn = 1) and (cposn = 1) and (dposn = 1) then begin
		writeln(0);
		Exit;
	end;

	if (aposn = 1) and (bposn = 4) and (cposn = 3) and (dposn = 1) then begin
		writeln(114);
                Exit;
        end;

	writeln(-1);
end;

begin
	readInput;
	Solve;
end.