/*
TASK: brkclk
LANG: C++
*/
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;

char d[5][10][4] = 
{
	{ ".=." , ".-.", ".=." , ".=." , ".-." , ".=." , ".=." , ".=." , ".=." , ".=." },
	{ "#.#" , "|.#", "|.#" , "|.#" , "#.#" , "#.|" , "#.|" , "|.#" , "#.#" , "#.#" },
	{ ".-." , ".-.", ".=." , ".=." , ".=." , ".=." , ".=." , ".-." , ".=." , ".=." },
	{ "#.#" , "|.#", "#.|" , "|.#" , "|.#" , "|.#" , "#.#" , "|.#" , "#.#" , "|.#" },
	{ ".=." , ".-.", ".=." , ".=." , ".-." , ".=." , ".=." , ".-." , ".=." , ".=." }
};

struct digit
{
	int n; // kato int 
	char a[5][4]; // kato char
	digit() { for ( int i = 0 ; i < 5 ; i++ ) a[i][0] = a[i][1] = a[i][2] = 0; }
	digit(int u)
	{
		n = u;
		for ( int i = 0 ; i < 5 ; i++ )
			for ( int j = 0 ; j < 4 ; j++ )
				a[i][j] = d[i][u][j];
	}
	void operator= (int u)
	{
		n = u;
		for ( int i = 0 ; i < 5 ; i++ )
			for ( int j = 0 ; j < 4 ; j++ )
				a[i][j] = d[i][u][j];
	}
};

struct dtime
{
	int n; // vremeto kato int
	digit dig[4]; // vremeto kato cifri
	dtime() { for ( int i = 0 ; i < 4 ; i++ ) dig[i] = 0; }
	dtime(int u)
	{
		n = u;
		for ( int i = 3 ; i >= 0 ; i-- )
		{
			int temp = u%10;
			u/=10;
			dig[i] = temp;
		}
	}
	dtime ( char u[5][20] )
	{
		n = 2500;
		for ( int i = 0 ; i < 5 ; i++ )
		{
			dig[0].a[i][0] = u[i][0];
			dig[0].a[i][1] = u[i][1];
			dig[0].a[i][2] = u[i][2];
			dig[0].a[i][3] = '\0';
			dig[1].a[i][0] = u[i][5];
			dig[1].a[i][1] = u[i][6];
			dig[1].a[i][2] = u[i][7];
			dig[1].a[i][3] = '\0';
			dig[2].a[i][0] = u[i][10];
			dig[2].a[i][1] = u[i][11];
			dig[2].a[i][2] = u[i][12];
			dig[2].a[i][3] = '\0';
			dig[3].a[i][0] = u[i][15];
			dig[3].a[i][1] = u[i][16];
			dig[3].a[i][2] = u[i][17];
			dig[3].a[i][3] = '\0';
		}	
	}	
	
	bool operator!=(int u)
	{
		if ( n!=u ) return true;
		return false;
	}
	
	bool operator==(const dtime &u)
	{
		for ( int i = 0 ; i < 4 ; i++ )
			for ( int j = 0 ; j < 5 ; j++ )
				for ( int k = 0 ; k < 3 ; k++ )
					if ( dig[i].a[j][k] != u.dig[i].a[j][k] ) return false;
		return true;
	}
	
	void operator++()
	{
		if ( dig[3].n == 9 )
		{
			dig[3] = 0;
			if ( dig[2].n == 5 )
			{
				dig[2] = 0;
				if ( dig[1].n == 9 )
				{
					dig[1] = 0;
					if ( dig[0].n == 1 )
					{
						dig[0] = 2;
						n = 2000;
					}
					else if ( dig[0].n == 0 )
					{
						dig[0] = 1;
						n = 1000;
					}
				}
				else if ( dig[1].n == 3 && dig[0].n == 2 )
				{
					dig[1] = 0;
					dig[0] = 0;
					n = 0;
				}
				else 
				{
					dig[1] = dig[1].n + 1;
					n += (100-59);
				}
			}
			else 
			{
				dig[2] = dig[2].n + 1;
				n += 1;
			}
		}
		else
		{
			dig[3] = dig[3].n + 1;
			n += 1;
		}
	}
	
	void print()
	{
		for ( int i = 0 ; i < 5 ; i++ , printf("\n") )
			for ( int j = 0 ; j < 4 ; j++ )
				printf("%s ", dig[j].a[i]);
	}
};

vector<int> kan; // kandidati za tekushto vreme

int main()
{
//	freopen("brkclk.in","r",stdin);
//	freopen("brkclk.out","w",stdout);
	
	char temp[5][20];
	for ( int i = 0 ; i < 5 ; i++ )
		fgets(temp[i],1000,stdin);
	
	dtime nach(temp);
	
	vector <int> pos;
//	nach.print();

	vector <int> cb[4]; // za sqka cifra koq moje da byde
	vector<int> cand;
	
	for ( dtime i(0) ; i.n != 2359 ; ++i )
	{
		int flag = 0;
		for ( int j = 0 ; j < 4 && !flag; j++ )
			for ( int l = 0 ; l < 5 && !flag; l++ ) 
				for ( int p = 0 ; p < 3 && !flag; p++ )
					if ( nach.dig[j].a[l][p] != i.dig[j].a[l][p] )
					{
						if ( nach.dig[j].a[l][p] == '#' || nach.dig[j].a[l][p] == '=' ) flag = 1;
						if ( nach.dig[j].a[l][p] == '|' || nach.dig[j].a[l][p] == '-' ) flag = 1;
					}
		if ( !flag ) cand.push_back(i.n);
	}

	if ( cand.size() > 30 ) printf("-1\n");
	if ( cand.size() == 1 ) printf("0");
	
	printf("114\n");

//	system("pause");	
	return 0;
}
