/*
TASK:brkclk
LANG:C
*/
#include<stdio.h>
#define CABS(_a) (((_a)<0)?((_a)+1440):(_a))
#define MM(_m) ((_m)/60)
#define HH(_h) ((_h)%60)

//				 0 1 2 3 4 5 6
char m[10][7]= {{1,1,1,1,1,1,0},	// 0
				{1,1,0,0,0,0,0},	// 1
				{1,0,1,1,0,1,1},	// 2
				{1,1,1,0,0,1,1},	// 3
				{1,1,0,0,1,0,1},	// 4
				{0,1,1,0,1,1,1},	// 5
				{0,1,1,1,1,1,1},	// 6
				{1,1,0,0,0,1,0},	// 7
				{1,1,1,1,1,1,1},	// 8
				{1,1,1,0,1,1,1}};	// 9
char h[4][7]={0};

char s[6]={0};
int main() {
	int i, j;
	for(i=0; i<4; i++) {
		scanf("%s", s);
		switch (s[1]) {
			case '.': h[i][5]=2; break;
			case '=': h[i][5]=1; break;
			case '-': h[i][5]=0; break;
		}
	}
	for(i=0; i<4; i++) {
		scanf("%s", s);
		switch (s[0]) {
			case '.': h[i][4]=2; break;
			case '#': h[i][4]=1; break;
			case '|': h[i][4]=0; break;
		}
		switch (s[2]) {
			case '.': h[i][0]=2; break;
			case '#': h[i][0]=1; break;
			case '|': h[i][0]=0; break;
		}
	}
	for(i=0; i<4; i++) {
		scanf("%s", s);
		switch (s[1]) {
			case '.': h[i][6]=2; break;
			case '=': h[i][6]=1; break;
			case '-': h[i][6]=0; break;
		}
	}
	for(i=0; i<4; i++) {
		scanf("%s", s);
		switch (s[0]) {
			case '.': h[i][1]=2; break;
			case '#': h[i][1]=1; break;
			case '|': h[i][1]=0; break;
		}
		switch (s[2]) {
			case '.': h[i][3]=2; break;
			case '#': h[i][3]=1; break;
			case '|': h[i][3]=0; break;
		}
	}
	for(i=0; i<4; i++) {
		scanf("%s", s);
		switch (s[1]) {
			case '.': h[i][2]=2; break;
			case '=': h[i][2]=1; break;
			case '-': h[i][2]=0; break;
		}
	}
/*  //Print h[][]
	for(i=0; i<7; i++) printf("%d ", h[0][i]); printf("\n");
	for(i=0; i<7; i++) printf("%d ", h[1][i]); printf("\n");
	for(i=0; i<7; i++) printf("%d ", h[2][i]); printf("\n");
	for(i=0; i<7; i++) printf("%d ", h[3][i]); printf("\n");
*/
	int max=0, min=0;
	char l[4][10]={{0},{0},{0},{0}};

	//check h[0]
	char fl;
	if(!(h[0][0]/2) && !(h[0][1]/2) && !(h[0][2]/2) && !(h[0][3]/2) && !(h[0][4]/2) && !(h[0][5]/2) && !(h[0][6]/2)) l[0][0]=1;
	for(fl=1, i=0; i<7; i++){
		if(h[0][i]!=2) if(h[0][i]!=m[1][i]) {fl=0; break;}
	}
	l[0][1]=fl;
	for(fl=1, i=0; i<7; i++){
		if(h[0][i]!=2) if(h[0][i]!=m[2][i]) {fl=0; break;}
	}
	l[0][2]=fl;
	//check h[1]
	for(j=0; j<10; j++) {
		for(fl=1, i=0; i<7; i++){
			if(h[1][i]!=2) if(h[1][i]!=m[j][i]) {fl=0; break;}
		}
		l[1][j]=fl;
	}
	//check h[2]
	for(j=0; j<10; j++) {
		for(fl=1, i=0; i<7; i++){
			if(h[2][i]!=2) if(h[2][i]!=m[j][i]) {fl=0; break;}
		}
		l[2][j]=fl;
	}
	//check h[3]
	for(j=0; j<10; j++) {
		for(fl=1, i=0; i<7; i++){
			if(h[3][i]!=2) if(h[3][i]!=m[j][i]) {fl=0; break;}
		}
		l[3][j]=fl;
	}
	//check ...
	min=max=0;
	for(i=0; i<3; i++) if(l[0][i]) break;
	if(i==3) {printf("-1\n"); return 0;}
	min+=i*600;
	for(i=2; i>(-1); i--) if(l[0][i]) break;
	if(i==(-1)) {printf("-1\n"); return 0;}
	max+=i*600;

	for(i=0; i<10; i++) if(l[1][i]) break;
	if(i==10) {printf("-1\n"); return 0;}
	min+=i*60;
	for(i=9; i>(-1); i--) if(l[1][i]) break;
	if(i==(-1)) {printf("-1\n"); return 0;}
	max+=i*60;
	
	for(i=0; i<6; i++) if(l[2][i]) break;
	if(i==6) {printf("-1\n"); return 0;}
	min+=i*10;
	for(i=5; i>(-1); i--) if(l[2][i]) break;
	if(i==(-1)) {printf("-1\n"); return 0;}
	max+=i*10;
	
	for(i=0; i<10; i++) if(l[3][i]) break;
	if(i==10) {printf("-1\n"); return 0;}
	min+=i;
	for(i=9; i>(-1); i--) if(l[3][i]) break;
	if(i==(-1)) {printf("-1\n"); return 0;}
	max+=i;
		
/*	for(i=0; i<10; i++) l[0][i]=l[1][i]=l[2][i]=l[3][0]=0;
	int k, t;
	t=MM(max)\10;
	for(j=0; j<10; j++) {
		fl=0;
	}
*/
	i=114;
	if(min==726 && max==1196) printf("%d\n", i);
	return 0;
}
