/*
TASK: brkclk
LANG: C
*/
#include<stdio.h>
#include<string.h>

#define M 4
#define R 5
#define C 3
#define MAXV 4092

int q[MAXV],qc;
int pos[8][2] = { {0,1}, {1,0}, {1,2}, {2,1}, {3,0}, {3,2}, {4,1} };
char can[M][10],s1[MAXV],same[MAXV][MAXV];
char a[M][R][C+5];
char num[12][8],eq[M][10][10];

int check(int i,int x)
{
	int j;
	for(j=0;j<7;j++)
	{
		if(a[i][pos[j][0]][pos[j][1]]!=-1&&a[i][pos[j][0]][pos[j][1]]!=num[x][j]-'0') break;
	}
	if(j==7) return 1;
	else return 0;
}

int check2(int i,int x,int y)
{
	int j;
	for(j=0;j<7;j++)
	{
		if(a[i][pos[j][0]][pos[j][1]]!=-1&&num[x][j]-'0'!=num[y][j]-'0') break;
	}
	if(j==7) return 1;
	else return 0;
}

int check_num(int x)
{
	if(x<1000)
	{
		if(!can[0][10]) return 0;
	}
	else if(!can[0][x/1000]) return 0;
	x%=1000;
	if(!can[1][x/100]) return 0;
	x%=100;
	if(!can[2][x/10]) return 0;
	x%=10;
	if(!can[3][x]) return 0;
	return 1;
}

int check2_num(int x,int y)
{
	int t1,t2;
	if(x<1000) t1=10;
	else t1=x/1000;
	if(y<1000) t2=10;
	else t2=y/1000;
	if(!eq[0][t1][t2]) return 0;
	x%=1000; y%=1000;
	if(!eq[1][x/100][y/100]) return 0;
	x%=100; y%=100;
	if(!eq[2][x/10][y/10]) return 0;
	x%=10; y%=10;
	if(!eq[3][x][y]) return 0;
	return 1;
}

int main()
{
	int i,j,k,a1,b1,a2,b2,x1,y1,x2,y2,max,flg;
	for(i=0;i<R;i++)
	{
		for(j=0;j<M;j++) scanf("%s",a[j][i]);
	}
	for(i=0;i<M;i++)
	{
		for(j=0;j<7;j++)
		{
			if(a[i][pos[j][0]][pos[j][1]]=='#'||a[i][pos[j][0]][pos[j][1]]=='=') a[i][pos[j][0]][pos[j][1]]=1;
			else if(a[i][pos[j][0]][pos[j][1]]=='-'||a[i][pos[j][0]][pos[j][1]]=='|') a[i][pos[j][0]][pos[j][1]]=0;
			else a[i][pos[j][0]][pos[j][1]]=-1;
		}
	}
	strcpy(num[0],"1110111");
	strcpy(num[1],"0010010");
	strcpy(num[2],"1011101");
	strcpy(num[3],"1011011");
	strcpy(num[4],"0111010");
	strcpy(num[5],"1101011");
	strcpy(num[6],"1101111");
	strcpy(num[7],"1010010");
	strcpy(num[8],"1111111");
	strcpy(num[9],"1111011");
	strcpy(num[10],"0000000");
	for(i=0;i<4;i++)
	{
		for(j=0;j<=10;j++)
		{
			can[i][j]=check(i,j);
		}
		for(j=0;j<=10;j++)
		{
			for(k=0;k<=10;k++)
			{
				eq[i][j][k]=check2(i,j,k);
			}
		}
	}
	flg=1;
	for(a1=0;a1<24;a1++)
	{
		for(b1=0;b1<60;b1++)
		{
			s1[a1*100+b1]=check_num(a1*100+b1);
			if(s1[a1*100+b1]) { q[qc++]=a1*100+b1; }
			else flg=0;
			for(a2=0;a2<24;a2++)
			{
				for(b2=0;b2<60;b2++)
				{
					same[a1*100+b1][a2*100+b2]=check2_num(a1*100+b1,a2*100+b2);
				}
			}
		}
	}
	if(flg) { printf("%d\n",-1); return 0; }
	max=-1;
	for(i=0;i<qc;i++)
	{
		a1=q[i]/100; b1=q[i]%100;
		for(j=0;j<qc;j++)
		{
			if(i==j) continue;
			a2=q[j]/100; b2=q[j]%100;
			for(k=1;k<1440;k++)
			{
				x1=a1+k/60; y1=b1+k%60;
				if(y1>=60) { y1%=60; x1++; }
				if(x1>=24) { x1%=24; }
				x2=a2+k/60; y2=b2+k%60;
				if(y2>=60) { y2%=60; x2++; }
				if(x2>=24) { x2%=24; }
				if(!same[x1*100+y1][x2*100+y2])
				{
					break;
				}
			}
			if(k>max) max=k;
			if(max==1440) { printf("%d\n",-1); return 0; }
		}
	}
	printf("%d\n",max);
	return 0;
}
