/*
TASK:brkclk
LANG:C++
*/

#include <map>
#include <cstdio>
#include <vector>
#include <algorithm>

typedef signed int ind;
typedef unsigned int tmr;
typedef long long unsigned int hashval;

void read_ind(ind& n) {std::scanf("%d", &n);}
void write_ind(const ind& n) {std::printf("%d", n);}
void read_tmr(tmr& n) {std::scanf("%u", &n);}
void write_tmr(const tmr& n) {std::printf("%u", n);}
void write(char *s) {std::printf("%s", s);}

const tmr infinity = UINT_MAX;

enum segstate {DAMAGED, ON, OFF};

segstate desc[11][7] = 
{
	{ON, ON, ON, ON, ON, OFF, ON},
	{OFF, ON, OFF, ON, OFF, OFF, OFF},
	{OFF, ON, ON, OFF, ON, ON, ON},
	{OFF, ON, OFF, ON, ON, ON, ON},
	{ON, ON, OFF, ON, OFF, ON, OFF},
	{ON, OFF, OFF, ON, ON, ON, ON},
	{ON, OFF, ON, ON, ON, ON, ON},
	{OFF, ON, OFF, ON, ON, OFF, OFF},
	{ON, ON, ON, ON, ON, ON, ON},
	{ON, ON, OFF, ON, ON, ON, ON},
	{OFF, OFF, OFF, OFF, OFF, OFF, OFF}
};

bool fit(segstate* m, segstate* c)
{
	for (ind i = 0; i < 7; i++)
		if (c[i] != DAMAGED && m[i] != c[i])
			return false;

	return true;
}

int main()
{
	segstate h1[7], h2[7], m1[7], m2[7];
	char buffer[5][20];
	for (ind i = 0; i < 5; i++)
		std::gets(buffer[i]);

	if (buffer[0][1] == '=') h1[4] = ON; else if (buffer[0][1] == '-') h1[4] = OFF; else h1[4] = DAMAGED;
	if (buffer[2][1] == '=') h1[5] = ON; else if (buffer[2][1] == '-') h1[5] = OFF; else h1[5] = DAMAGED;
	if (buffer[4][1] == '=') h1[6] = ON; else if (buffer[4][1] == '-') h1[6] = OFF; else h1[6] = DAMAGED;
	if (buffer[1][0] == '#') h1[0] = ON; else if (buffer[1][0] == '|') h1[0] = OFF; else h1[0] = DAMAGED;
	if (buffer[3][0] == '#') h1[2] = ON; else if (buffer[3][0] == '|') h1[2] = OFF; else h1[2] = DAMAGED;
	if (buffer[1][2] == '#') h1[1] = ON; else if (buffer[1][2] == '|') h1[1] = OFF; else h1[1] = DAMAGED;
	if (buffer[3][2] == '#') h1[3] = ON; else if (buffer[3][2] == '|') h1[3] = OFF; else h1[3] = DAMAGED;

	if (buffer[0][6] == '=') h2[4] = ON; else if (buffer[0][6] == '-') h2[4] = OFF; else h2[4] = DAMAGED;
	if (buffer[2][6] == '=') h2[5] = ON; else if (buffer[2][6] == '-') h2[5] = OFF; else h2[5] = DAMAGED;
	if (buffer[4][6] == '=') h2[6] = ON; else if (buffer[4][6] == '-') h2[6] = OFF; else h2[6] = DAMAGED;
	if (buffer[1][5] == '#') h2[0] = ON; else if (buffer[1][5] == '|') h2[0] = OFF; else h2[0] = DAMAGED;
	if (buffer[3][5] == '#') h2[2] = ON; else if (buffer[3][5] == '|') h2[2] = OFF; else h2[2] = DAMAGED;
	if (buffer[1][7] == '#') h2[1] = ON; else if (buffer[1][7] == '|') h2[1] = OFF; else h2[1] = DAMAGED;
	if (buffer[3][7] == '#') h2[3] = ON; else if (buffer[3][7] == '|') h2[3] = OFF; else h2[3] = DAMAGED;

	if (buffer[0][11] == '=') m1[4] = ON; else if (buffer[0][11] == '-') m1[4] = OFF; else m1[4] = DAMAGED;
	if (buffer[2][11] == '=') m1[5] = ON; else if (buffer[2][11] == '-') m1[5] = OFF; else m1[5] = DAMAGED;
	if (buffer[4][11] == '=') m1[6] = ON; else if (buffer[4][11] == '-') m1[6] = OFF; else m1[6] = DAMAGED;
	if (buffer[1][10] == '#') m1[0] = ON; else if (buffer[1][10] == '|') m1[0] = OFF; else m1[0] = DAMAGED;
	if (buffer[3][10] == '#') m1[2] = ON; else if (buffer[3][10] == '|') m1[2] = OFF; else m1[2] = DAMAGED;
	if (buffer[1][12] == '#') m1[1] = ON; else if (buffer[1][12] == '|') m1[1] = OFF; else m1[1] = DAMAGED;
	if (buffer[3][12] == '#') m1[3] = ON; else if (buffer[3][12] == '|') m1[3] = OFF; else m1[3] = DAMAGED;

	if (buffer[0][16] == '=') m2[4] = ON; else if (buffer[0][16] == '-') m2[4] = OFF; else m2[4] = DAMAGED;
	if (buffer[2][16] == '=') m2[5] = ON; else if (buffer[2][16] == '-') m2[5] = OFF; else m2[5] = DAMAGED;
	if (buffer[4][16] == '=') m2[6] = ON; else if (buffer[4][16] == '-') m2[6] = OFF; else m2[6] = DAMAGED;
	if (buffer[1][15] == '#') m2[0] = ON; else if (buffer[1][15] == '|') m2[0] = OFF; else m2[0] = DAMAGED;
	if (buffer[3][15] == '#') m2[2] = ON; else if (buffer[3][15] == '|') m2[2] = OFF; else m2[2] = DAMAGED;
	if (buffer[1][17] == '#') m2[1] = ON; else if (buffer[1][17] == '|') m2[1] = OFF; else m2[1] = DAMAGED;
	if (buffer[3][17] == '#') m2[3] = ON; else if (buffer[3][17] == '|') m2[3] = OFF; else m2[3] = DAMAGED;

	std::vector<tmr> psbl_hrs;
	std::vector<tmr> psbl_mns;

	for (tmr hr = 0; hr < 24; hr++)
		if (fit((hr > 10 ? desc[hr/10] : desc[10]), h1) && fit(desc[hr%10], h2))
			psbl_hrs.push_back(hr);

	for (tmr min = 0; min < 60; min++)
		if (fit(desc[min/10], m1) && fit(desc[min%10], m2))
			psbl_mns.push_back(min);

	tmr answer = 0;
	if (psbl_hrs.size() == 1)
	{
		tmr cm = 0;
		while (psbl_mns.size() > 1 && cm < 60)
		{
			cm++; answer++;
			std::vector<segstate*> cm1s(psbl_mns.size()), cm2s(psbl_mns.size());
			for (ind i = 0; i < (ind)psbl_mns.size(); i++)
			{
				const tmr& m = (psbl_mns[i]+cm)%60;
				if (!m) {psbl_mns[i] = infinity; break;}
				segstate *cm1 = new segstate[7];
				segstate *cm2 = new segstate[7];
				for (ind j = 0; j < 7; j++) cm1[j] = (m1[j] == DAMAGED ? DAMAGED : desc[m/10][j]);
				for (ind j = 0; j < 7; j++) cm2[j] = (m2[j] == DAMAGED ? DAMAGED : desc[m%10][j]);
				cm1s[i] = cm1;
				cm2s[i] = cm2;
			}

			std::map<hashval, ind> ref;
			for (ind i = 0; i < (ind)psbl_mns.size(); i++)
			{
				if (psbl_mns[i] == infinity) continue;
				hashval h = 0;
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)cm1s[i][j];}
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)cm2s[i][j];}
				ref[h]++;
			}

			for (ind i = 0; i < (ind)psbl_mns.size(); i++)
			{
				if (psbl_mns[i] == infinity) continue;
				hashval h = 0;
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)cm1s[i][j];}
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)cm2s[i][j];}
				if (ref[h] == 1) psbl_mns[i] = infinity;
			}

			std::sort(psbl_mns.begin(), psbl_mns.end());
			std::vector<tmr>::iterator it = std::lower_bound(psbl_mns.begin(), psbl_mns.end(), infinity);
			psbl_mns.erase(it, psbl_mns.end());
		}

		if (psbl_mns.size() > 1) answer = infinity;
	} else
	{
		tmr ch = 0;
		bool inced = false;
		while (psbl_hrs.size() > 1 && ch < 24)
		{
			ch++; if (!inced) {inced = true; answer += (60-psbl_mns[0]);} else answer += 60;
			std::vector<segstate*> ch1s(psbl_hrs.size()), ch2s(psbl_hrs.size());
			for (ind i = 0; i < (ind)psbl_hrs.size(); i++)
			{
				const tmr& h = (psbl_hrs[i]+ch)%24;
				segstate *ch1 = new segstate[7];
				segstate *ch2 = new segstate[7];
				for (ind j = 0; j < 7; j++) ch1[j] = (h1[j] == DAMAGED ? DAMAGED : (h < 10 ? desc[0][j] : desc[h/10][j]));
				for (ind j = 0; j < 7; j++) ch2[j] = (h2[j] == DAMAGED ? DAMAGED : desc[h%10][j]);
				ch1s[i] = ch1;
				ch2s[i] = ch2;
			}

			std::map<hashval, ind> ref;
			for (ind i = 0; i < (ind)psbl_hrs.size(); i++)
			{
				hashval h = 0;
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)ch1s[i][j];}
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)ch2s[i][j];}
				ref[h]++;
			}

			for (ind i = 0; i < (ind)psbl_hrs.size(); i++)
			{
				hashval h = 0;
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)ch1s[i][j];}
				for (ind j = 0; j < 7; j++) {h *= 3; h += (hashval)ch2s[i][j];}
				if (ref[h] == 1) psbl_hrs[i] = infinity;
			}

			std::sort(psbl_hrs.begin(), psbl_hrs.end());
			std::vector<tmr>::iterator it = std::lower_bound(psbl_hrs.begin(), psbl_hrs.end(), infinity);
			psbl_hrs.erase(it, psbl_hrs.end());
		}

		if (psbl_hrs.size() > 1) answer = infinity;
	}

	if (answer == infinity) write("-1"); else write_tmr(answer);
	write("\n");

	return 0;
}
