/*
TASK:brkclk
LANG:C++
*/
#include<cstdio>
#include<vector>
#include<algorithm>
#define MAXR 5
#define MAXC 3
#define MEMSET memset(tmp,0,sizeof(tmp));
using namespace std;
class time1
{
    public:
    int h,m;
    time1(){h=0;m=0;}
    time1(int hh1,int hh2,int hh3,int hh4)
    {
         h=hh1;
         h*=10;
         h=h+hh2;
         m=hh3*10;
         m+=hh4;
    }
    bool operator <(const time1 &t) const
    {
        if(t.h!=h) return h<t.h;
        else return m<t.m;
    }
    bool operator ==(time1 &k)
    {
        if(k.h==h&&k.m==m) return true;
        return false;
    }
};
class digit
{   public:
    int a[5][3];
    digit()
    {
    }
    digit(int k[MAXR][MAXC])
    {
        for(int i=0;i<MAXR;i++)
            for(int j=0;j<MAXC;j++)
            {
                a[i][j]=k[i][j];
            }
    }
    digit operator = (digit c)
    {
        for(int i=0;i<MAXR;i++)
            for(int j=0;j<MAXC;j++)
            {
                a[i][j]=c.a[i][j];
            }
        return a;
    }
    bool operator == (digit k)
    {
        for(int i=0;i<MAXR;i++)
            for(int j=0;j<MAXC;j++)
            {
                if(k.a[i][j]!=2&&a[i][j]!=2)
                {
                    if(k.a[i][j]!=a[i][j])
                        return false;
                }
            }
        return true;
    }
};
vector<digit> v;
vector<time1> tt;
digit h1, h2, m1,m2;
int kk1[16];
int kk2[16];
int nn1[16];
int nn2[16];
int maxm;
int hd,md;
void init()
{
    int tmp[MAXR][MAXC];
    //0
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][0]=1;
   tmp[1][2]=1;
   tmp[2][0]=1;
   tmp[2][2]=1;
   tmp[3][0]=1;
   tmp[3][2]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   tmp[4][3]=1;
   v.push_back(digit(tmp));
   h1=digit(tmp);
   //1
   MEMSET;
   tmp[0][2]=1;
   tmp[1][2]=1;
   tmp[2][2]=1;
   tmp[3][2]=1;
   tmp[4][2]=1;
   v.push_back(tmp);
   //2
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][2]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][0]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //3
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][2]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][2]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //4
   MEMSET;
   tmp[0][0]=1;
   tmp[0][2]=1;
   tmp[1][0]=1;
   tmp[1][2]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][2]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //5
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][0]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][2]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //6
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][0]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][0]=1;
   tmp[3][2]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //7
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][2]=1;
   tmp[2][2]=1;
   tmp[3][2]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //8
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][0]=1;
   tmp[1][2]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][0]=1;
   tmp[3][2]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));
   //9
   MEMSET;
   tmp[0][0]=1;
   tmp[0][1]=1;
   tmp[0][2]=1;
   tmp[1][0]=1;
   tmp[1][2]=1;
   tmp[2][0]=1;
   tmp[2][1]=1;
   tmp[2][2]=1;
   tmp[3][2]=1;
   tmp[4][0]=1;
   tmp[4][1]=1;
   tmp[4][2]=1;
   v.push_back(digit(tmp));

}
void readin()
{
    char tmp[MAXC];
    int hh1[MAXR][MAXC];
    int hh2[MAXR][MAXC];
    int mm1[MAXR][MAXC];
    int mm2[MAXR][MAXC];
    int i,j;
//    freopen("brkclk.in","r",stdin);
    for(i=0;i<MAXR;i++)
    {
            scanf("%s  ",tmp);
            for(int k=0;k<MAXC;k++)
            {
                if(tmp[k]=='='||tmp[k]=='#')
                    hh1[i][k]=1;
                if(tmp[k]=='|'||tmp[k]=='-')
                    hh1[i][k]=0;
                if(tmp[k]=='.')
                    hh1[i][k]=2;
            }
            scanf("%s  ",tmp);
            for(int k=0;k<MAXC;k++)
            {
                if(tmp[k]=='='||tmp[k]=='#')
                    hh2[i][k]=1;
                if(tmp[k]=='|'||tmp[k]=='-')
                    hh2[i][k]=0;
                if(tmp[k]=='.')
                    hh2[i][k]=2;
            }
            scanf("%s  ",tmp);
            for(int k=0;k<MAXC;k++)
            {
                if(tmp[k]=='='||tmp[k]=='#')
                    mm1[i][k]=1;
                if(tmp[k]=='|'||tmp[k]=='-')
                    mm1[i][k]=0;
                if(tmp[k]=='.')
                    mm1[i][k]=2;
            }
            scanf("%s",tmp);
            for(int k=0;k<MAXC;k++)
            {
                if(tmp[k]=='='||tmp[k]=='#')
                    mm2[i][k]=1;
                if(tmp[k]=='|'||tmp[k]=='-')
                    mm2[i][k]=0;
                if(tmp[k]=='.')
                    mm2[i][k]=2;
            }
    }
    h1=digit(hh1);
    h2=digit(hh2);
    m1=digit(mm1);
    m2=digit(mm2);
}
int calculate(int ind1, int ind2)
{
        time1 t1,t2;
        int i=1;
        int j,k;
        int dd;
        int tmp1[MAXR][MAXC]={0};
        int tmp2[MAXR][MAXC]={0};
        t1=tt[ind1];
        t2=tt[ind2];
        while(true)
        {
            time1 ct1,ct2;
            ct1.m=(t1.m+i)%60;
            ct1.h=(t1.h+(t1.m+i)/60)%24;
            ct2.m=(t2.m+i)%60;
            ct2.h=(t2.h+(t2.m+i)/60)%24;
            if(ct1==t1){printf("-1\n");exit(0);}
            dd=ct1.h/10;
            //ako pyrviq chas e 0
            if(dd==0)
            {
                for(j=0;i<MAXR;i++)
                    for(k=0;k<MAXC;k++)
                    {
                        if(h1.a[j][k]==2)
                            tmp1[j][k]=2;
                        else
                            tmp1[j][k]=0;
                    }
            }
            //ako e 1 ili 2
            else
            {
              for(j=0;j<MAXR;j++)
                    for(k=0;k<MAXC;k++)
                    {
                        if(h1.a[j][k]==2)
                            tmp1[j][k]=2;
                        else
                            tmp1[j][k]=v[dd].a[j][k];
                    }
            }
            
            dd=ct2.h/10;
            //ako pyrviq chas e 0
            if(dd==0)
            {
                for(j=0;j<MAXR;j++)
                    for(k=0;k<MAXC;k++)
                    {
                        if(h1.a[j][k]==2)
                            tmp2[j][k]=2;
                        else
                            tmp2[j][k]=0;
                    }
            }
            //ako e 1 ili 2
            else
            {
              for(j=0;j<MAXR;j++)
                    for(k=0;k<MAXC;k++)
                    {
                        if(h1.a[j][k]==2)
                            tmp2[j][k]=2;
                        else
                            tmp2[j][k]=v[dd].a[j][k];
                    }
            }
           if(!(digit(tmp1)==digit(tmp2))) return i;
           //za vtorata cifra
           dd=ct1.h%10;
           for(j=0;j<MAXR;j++)
                for(k=0;k<MAXC;k++)
                {
                    if(h2.a[j][k]==2)
                        tmp1[j][k]==2;
                    else
                        tmp1[j][k]=v[dd].a[j][k];
                }
           dd=ct2.h%10;
           for(j=0;j<MAXR;j++)
                for(k=0;k<MAXC;k++)
                {
                    if(h2.a[j][k]==2)
                        tmp2[j][k]==2;
                    else
                        tmp2[j][k]=v[dd].a[j][k];
                }

           if(!(digit(tmp1)==digit(tmp2))){return i;}
           //za minutite
           dd=ct1.m/10;
           for(j=0;j<MAXR;j++)
                for(k=0;k<MAXC;k++)
                {
                    if(m1.a[j][k]==2)
                        tmp1[j][k]==2;
                    else
                        tmp1[j][k]=v[dd].a[j][k];
                }
           dd=ct2.m/10;
           for(j=0;j<MAXR;j++)
                for(k=0;k<MAXC;k++)
                {
                    if(m1.a[j][k]==2)
                        tmp2[j][k]==2;
                    else
                        tmp2[j][k]=v[dd].a[j][k];
                }
           if(!(digit(tmp1)==digit(tmp2))) return i;

           dd=ct1.m%10;
           for(j=0;j<MAXR;j++)
                for(k=0;k<MAXC;k++)
                {
                    if(m2.a[j][k]==2)
                        tmp1[j][k]==2;
                    else
                        tmp1[j][k]=v[dd].a[j][k];
                }
           dd=ct2.m%10;
           for(j=0;j<MAXR;j++)
                for(k=0;k<MAXC;k++)
                {
                    if(m2.a[j][k]==2)
                        tmp2[j][k]==2;
                    else
                        tmp2[j][k]=v[dd].a[j][k];
                }
           if(!(digit(tmp1)==digit(tmp2))) return i;
           i++;
        }
}
void solve()
{
    int i;
    int cd;
    for(i=0;i<=9;i++)
    {
        if(h1==v[i])kk1[i]=1;
    }
    for(i=0;i<=9;i++)
    {
        if(h2==v[i])kk2[i]=1;
    }

    for(i=0;i<=9;i++)
    {
        if(m1==v[i])nn1[i]=1;
    }
    for(i=0;i<=9;i++)
    {
        if(m2==v[i])nn2[i]=1;
    }
    for(int i=1;i<=2;i++)
        for(int j=0;j<=9;j++)
            for(int k=0;k<=5;k++)
                for(int l=0;l<=9;l++)
                {
                    if(kk1[i]&&kk2[j]&&nn1[k]&&nn2[l])
                        tt.push_back(time1(i,j,k,l));
                }
     sort(tt.begin(),tt.end());
     for(int i=0;i<tt.size();i++)
        for(int j=i+1;j<tt.size();j++)
             {
             //printf("%d %d %d %d\n",tt[i].h,tt[i].m,tt[i+1].h,tt[i+1].m);
             cd=calculate(i,j);
             if(maxm<cd)maxm=cd;
             }
}
void output()
{
    printf("%d\n",maxm);
}
int main()
{
        init();
        readin();
        solve();
        output();
}

