/*
TASK:brkclk
LANG:C
*/

#include <stdio.h>
#include <math.h>
#define MAX 1337
FILE *in; FILE *out;
int clk[4][7];
int poss[4][10];
int a[7];
int rem[4];
/*
Legend:
0: broken
1: turned off, but working
2: turned on and working;
*/



int check(int n)
{
int i;

if (a[0] == 2)
   {
   if (n == 1) return 0;
   if (n == 4) return 0;
   }
if (a[0] == 1)
   {
   if (n != 1 && n != 4) return 0;
   }

if (a[1] == 2)
   {
   if (n == 1) return 0;
   if (n == 2) return 0;
   if (n == 3) return 0;   
   if (n == 7) return 0;
   }
if (a[1] == 1)
   {
   if (n == 4) return 0;
   if (n == 5) return 0;
   if (n == 6) return 0;
   if (n == 7) return 0;
   if (n == 8) return 0;
   if (n == 9) return 0;
   if (n == 0) return 0;   
   }

if (a[2] == 2)
   {
   if (n == 5) return 0;
   if (n == 6) return 0;
   }
if (a[2] == 1)
   {
   if (n != 5 && n != 6) return 0;
   }

if (a[3] == 2)
   {
   if (n == 1) return 0;
   if (n == 7) return 0;
   if (n == 0) return 0;
   }
if (a[3] == 1)
   {
   if (n!=1 && n!=7 && n!=0) return 0;
   }

if (a[4] == 2)
   {
   if (n == 1) return 0;
   if (n == 3) return 0;
   if (n == 4) return 0;
   if (n == 5) return 0;
   if (n == 7) return 0;
   if (n == 9) return 0;   
   }
if (a[4] == 1)
   {
   if (n == 2) return 0;
   if (n == 6) return 0;
   if (n == 8) return 0;
   if (n == 0) return 0;
   }

if (a[5] == 2) {if (n == 2) return 0;}
if (a[5] == 1) {if (n != 2) return 0;}

if (a[6] == 2)
   {
   if (n == 1) return 0;
   if (n == 4) return 0;
   if (n == 7) return 0;
   }
if (a[6] == 1)
   {
   if (n == 2) return 0;
   if (n == 3) return 0;
   if (n == 5) return 0;
   if (n == 6) return 0;
   if (n == 8) return 0;
   if (n == 9) return 0;
   if (n == 0) return 0;   
   }

//for (i=0; i<7; i++) fprintf(out, "%d ", a[i]);
//fprintf(out, "\n");
//fprintf(out, "It could be number %d!\n", n);

return 1;
}


int chkk(int n)
{





return 1;
}


void setclock(int num)
{
int i;

for (i=0; i<7; i++) if (a[i] == 2) a[i] = 1;

if (num == 0)
   {
   if (a[0]) a[0] = 2;
   if (a[1]) a[1] = 2;
   if (a[2]) a[2] = 2;
   if (a[4]) a[4] = 2;
   if (a[5]) a[5] = 2;
   if (a[6]) a[6] = 2;
   }

if (num == 1)
   {
   if (a[2]) a[2] = 2;
   if (a[5]) a[5] = 2;
   }

if (num == 2)
   {
   if (a[0]) a[0] = 2;
   if (a[2]) a[2] = 2;
   if (a[3]) a[3] = 2;
   if (a[4]) a[4] = 2;
   if (a[6]) a[6] = 2;
   }

if (num == 3)
   {
   if (a[0]) a[0] = 2;
   if (a[2]) a[2] = 2;
   if (a[3]) a[3] = 2;
   if (a[5]) a[5] = 2;
   if (a[6]) a[6] = 2;
   }

if (num == 4)
   {
   if (a[1]) a[1] = 2;
   if (a[2]) a[2] = 2;
   if (a[3]) a[3] = 2;
   if (a[5]) a[5] = 2;
   }

if (num == 5)
   {
   if (a[0]) a[0] = 2;
   if (a[1]) a[1] = 2;
   if (a[3]) a[3] = 2;
   if (a[5]) a[5] = 2;
   if (a[6]) a[6] = 2;
   }

if (num == 6)
   {
   if (a[0]) a[0] = 2;
   if (a[1]) a[1] = 2;
   if (a[3]) a[3] = 2;
   if (a[4]) a[4] = 2;
   if (a[5]) a[5] = 2;
   if (a[6]) a[6] = 2;
   }

if (num == 7)
   {
   if (a[0]) a[0] = 2;
   if (a[2]) a[2] = 2;
   if (a[5]) a[5] = 2;
   }

if (num == 8)
   {
   if (a[0]) a[0] = 2;
   if (a[1]) a[1] = 2;
   if (a[2]) a[2] = 2;
   if (a[3]) a[3] = 2;
   if (a[4]) a[4] = 2;
   if (a[5]) a[5] = 2;
   if (a[6]) a[6] = 2;
   }

if (num == 9)
   {
   if (a[0]) a[0] = 2;
   if (a[1]) a[1] = 2;
   if (a[2]) a[2] = 2;
   if (a[3]) a[3] = 2;
   if (a[5]) a[5] = 2;
   if (a[6]) a[6] = 2;
   }

return;
}



int dowork(void)
{
int i, c, j, k;
int ans = 0;
int cnt, tmp, maxx;
int tail[10], len;

for (i=0; i<7; i++) a[i] = clk[3][i];
for (i=0; i<10; i++) {poss[3][i] = check(i); if (poss[3][i]) rem[3]++;}
for (i=0; i<7; i++) a[i] = clk[2][i];
for (i=0; i<10; i++) {poss[2][i] = check(i); if (poss[2][i]) rem[2]++;}
for (i=0; i<7; i++) a[i] = clk[1][i];
for (i=0; i<10; i++) {poss[1][i] = check(i); if (poss[1][i]) rem[1]++;}
for (i=0; i<7; i++) a[i] = clk[0][i];
for (i=0; i<10; i++) {poss[0][i] = check(i); if (poss[0][i]) rem[0]++;}
for (i=6; i<10; i++) if (poss[2][i]) {poss[2][i] = 0; rem[2]--;}
for (i=3; i<10; i++) if (poss[0][i]) {poss[0][i] = 0; rem[0]--;}
if (poss[0][0]) {poss[0][0] = 0; rem[0]--;}

/*
// For Testing
for (i=0; i<4; i++)
    {
    fprintf(out, "Possible numbers for sign %d: ", i+1);
    for (c=0; c<10; c++) if (poss[i][c]) fprintf(out, "%d ", c);
    fprintf(out, "\n");
    }
for (i=0; i<4; i++) fprintf(out, "Remaining for %d %d\n", i+1, rem[i]);
//=============
*/

if (rem[0] == 2 && rem[1] == 9) return -1;

if (rem[0] == 0)
   {
   for (i=0; i<10; i++) if (poss[3][i]) {ans = 10 - i; break;}
   for (i=0; i<10; i++) if (poss[2][i]) {ans += 60 - i*10 - 10; break;}
   for (i=0; i<10; i++) if (poss[1][i]) {ans += 600 - i*60 - 60; break;}
   return ans;
   }

if (rem[0] == 1 && rem[1] == 1 && rem[2] == 1 && rem[3] == 1) return 0;
if (rem[0] != 1 || rem[1] != 1 || rem[2] != 1) 
   {
   for (i=0; i<10; i++) if (poss[3][i]) {ans = 10 - i; break;}
   }
else
   {
   maxx = 0;
   for (i=0; i<10; i++) if (poss[3][i])
       {
       cnt = 0; len = 0;
       for (j=0; j<10; j++) if (poss[3][j]) {tail[len] = j; len++;}
       for (j=0; j<7; j++) a[j] = clk[3][j];
       
       for (c=i+1; c<7; c++)
           {
           setclock(c);
           k = 0; tmp = 0;
           for (j=0; j<len; j++)
               {
               if (tail[j]==-1) continue;
               k = check(tail[j]+c-i);
               if (k==1) tmp++;
               else tail[j] = -1;
               }
           if (tmp>1) cnt++;
           }
       if (cnt>maxx) maxx = cnt;
       }
   ans += (maxx)*10;
   }


if (rem[0] != 1 || rem[1] != 1)
   {
   for (i=0; i<10; i++) if (poss[2][i]) {ans += 60 - i*10 - 10; break;}
   }
else
   {
   maxx = 0;
   for (i=0; i<10; i++) if (poss[2][i])
       {
       cnt = 0; len = 0;
       for (j=0; j<10; j++) if (poss[2][j]) {tail[len] = j; len++;}
       for (j=0; j<7; j++) a[j] = clk[2][j];
       
       for (c=i+1; c<7; c++)
           {
           setclock(c);
           k = 0; tmp = 0;
           for (j=0; j<len; j++)
               {
               if (tail[j]==-1) continue;
               k = check(tail[j]+c-i);
               if (k==1) tmp++;
               else tail[j] = -1;
               }
           if (tmp>1) cnt++;
           }
       if (cnt>maxx) maxx = cnt;
       }
   ans += (maxx)*10;
   }

if (rem[0]==1)
   {
   for (i=0; i<10; i++) if (poss[0][i]) break;
   if (i==1)
      {
      maxx = 0;
      for (i=0; i<10; i++) if (poss[1][i])
          {
          cnt = 0; len = 0;
          for (j=0; j<10; j++) if (poss[1][j]) {tail[len] = j; len++;}
          for (j=0; j<7; j++) a[j] = clk[1][j];

          for (c=i+1; c<7; c++)
              {
              setclock(c);
              k = 0; tmp = 0;
              for (j=0; j<len; j++)
                  {
                  if (tail[j]==-1) continue;
                  k = check(tail[j]+c-i);
                  if (k==1) tmp++;
                  else tail[j] = -1;
                  }
              if (tmp>1) cnt++;
              }
          if (cnt>maxx) maxx = cnt;
          }
       ans += (maxx)*60;
      }
   if (i==2)
      {
      maxx = 0;
      for (i=0; i<4; i++) if (poss[1][i])
          {
          cnt = 0; len = 0;
          for (j=0; j<4; j++) if (poss[1][j]) {tail[len] = j; len++;}
          for (j=0; j<7; j++) a[j] = clk[1][j];

          for (c=i+1; c<7; c++)
              {
              setclock(c);
              k = 0; tmp = 0;
              for (j=0; j<len; j++)
                  {
                  if (tail[j]==-1) continue;
                  k = check(tail[j]+c-i);
                  if (k==1) tmp++;
                  else tail[j] = -1;
                  }
              if (tmp>1) cnt++;
              }
          if (cnt>maxx) maxx = cnt;
          }
       ans += (maxx)*60;
      }
   }
else
   {
       
   for (i=0; i<10; i++) if (poss[1][i] && i<4)
       {
       maxx = ans + (4 - 1 - i)*60;
       break;
       }
   for (i=4; i<10; i++) if (poss[1][i])
       {
       tmp = ans + (10 - 1 - i)*60;
       break;
       }
        
   ans = maxx;
   
   if (rem[0] == 3)
      {
      return ans + 12*60;
      }
   return ans;
   }

return ans;
}



void input(void)
{
int i, c;
char aa[8];

for (i=0; i<4; i++) for (c=0; c<10; c++) poss[i][c] = 0;
for (i=0; i<4; i++) rem[i] = 0;

for (i=0; i<4; i++)
    {
    fscanf(in, "%s", aa); 
    clk[i][0] = 0;
    if (aa[1] == '=') clk[i][0] = 2;
    if (aa[1] == '-') clk[i][0] = 1;
    }

for (i=0; i<4; i++) 
    {
    fscanf(in, "%s", aa);
    clk[i][1] = 0; clk[i][2] = 0;
    if (aa[0] == '#') clk[i][1] = 2;
    if (aa[0] == '|') clk[i][1] = 1;
    if (aa[2] == '#') clk[i][2] = 2;
    if (aa[2] == '|') clk[i][2] = 1;
    }

for (i=0; i<4; i++)
    {
    fscanf(in, "%s", aa);
    clk[i][3] = 0;
    if (aa[1] == '=') clk[i][3] = 2;
    if (aa[1] == '-') clk[i][3] = 1;
    }

for (i=0; i<4; i++)
    {
    fscanf(in, "%s", aa);
    clk[i][4] = 0; clk[i][5] = 0;
    if (aa[0] == '#') clk[i][4] = 2;
    if (aa[0] == '|') clk[i][4] = 1;
    if (aa[2] == '#') clk[i][5] = 2;
    if (aa[2] == '|') clk[i][5] = 1;
    }

for (i=0; i<4; i++)
    {
    fscanf(in, "%s", aa);
    clk[i][6] = 0;
    if (aa[1] == '=') clk[i][6] = 2;
    if (aa[1] == '-') clk[i][6] = 1;
    }

fclose(in);
return;
}


void output(int ans)
{
fprintf(out, "%d\n", ans);

fclose(out);
return;
}


int main(void)
{
int i, c;
int ans;

//in = fopen("brkclk.in", "rt"); out = fopen("brkclk.out", "wt");
in = stdin; out = stdout;

input();
ans = dowork();
output(ans);

    
return 0;
}
