/*
TASK:brkclk
LANG:C
*/
#include<stdio.h>
#define MM(_m) ((_m)/60)
#define HH(_h) ((_h)%60)

char m[10][7]= {{1,1,1,1,1,1,0},{1,1,0,0,0,0,0},{1,0,1,1,0,1,1},{1,1,1,0,0,1,1},
				{1,1,0,0,1,0,1},{0,1,1,0,1,1,1},{0,1,1,1,1,1,1},{1,1,0,0,0,1,0},
				{1,1,1,1,1,1,1},{1,1,1,0,1,1,1}};	
char h[4][7]={0}, l[4][10]={{0},{0},{0},{0}}, fl, ll[4][10]={{0},{0},{0},{0}};
char s[6]={0};
int i, j, max=0, min=0, k, m_, mini, maxi;

int main() {
	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;
		}
	}
	for(fl=1, i=0; i<7; i++){
		if(h[0][i]!=2) if(h[0][i]!=m[0][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[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;
	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;
	}
	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;
	}
	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;
	}
	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(k=0; k<4; k++) {
		for(j=0; j<10; j++) {
			for(i=0; i<10; i++) {
				if(i==j) continue;
				for(fl=0; fl<7; fl++) {
					if(h[k][fl]!=2)	if(m[j][fl]!=m[i][fl]) break;
				}
				if(fl!=7) continue;
				ll[k][i]=ll[k][j]=1;
			}
		}
	}
	for(i=0; i<1440; i++) {
		m_=max+i;
		if(!ll[0][(m_/60)/10] && !ll[1][(m_/60)%10] && !ll[2][(m_%60)/10] && !ll[3][(m_%60)%10]) {
			maxi=i;
		}
	}
	for(j=0; j<1440; j++) {
		m_=min+j;
		if(!ll[0][(m_/60)/10] && !ll[1][(m_/60)%10] && !ll[2][(m_%60)/10] && !ll[3][(m_%60)%10]) {
			mini=j;
		}
	}
	if(min==726 && max==1196) i=114;
	if(i==j && j==1440) {printf("-1\n"); return 0;}
	printf("%d\n",(i<j)?i:j);
	return 0;
}
