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

int i,j,k,l,s, sure[5][8], shown[5][8], digits[10][8] = {
{0,0,0,0,0,0,0,0},
{0,0,0,1,0,0,0,1},
{0,0,1,1,1,1,1,0},
{0,1,1,1,1,0,1,1},
{0,1,0,1,1,0,0,1},
{0,1,1,0,1,0,1,1},
{0,1,1,0,1,1,1,1},
{0,0,1,1,0,0,0,1},
{0,1,1,1,1,1,1,1},
{0,1,1,1,1,0,1,1}
};

char tmp;

int calc_pos(int row, int pos) {
if (row % 2 && pos == 2) return row + 1; else
if (row == 2 && pos != 2) return pos; else
if (row == 4 && pos != 2) return pos + 4; return -1;
}

int p =0;

int poss[4][10];

int main () {

//freopen("brkclk.inp", "r", stdin);

for (i=1; i<=5; i++) {
  for (j=1; j<=4; j++) {
  
    for (k=1; k<=3; k++) {
      l = calc_pos(i, k);
      scanf("%c", &tmp);
      if (l != -1) {
        if (tmp == '=' || tmp == '#') shown[j][l] = 1; else
          if (tmp == '.') shown[j][l] = -1;
        }
      }
      
    scanf("%c", &tmp);
    }
}
// krai na vhoda

for (i=1; i<=4; i++)
  for (j=0; j<=9; j++) {
    int possible = 1;
    for (k=1; k<=7; k++)
      if ((shown[i][k] == 0 && digits[j][k] == 1) ||
          (shown[i][k] == 1 && digits[j][k] == 0)) possible = 0;

    if (possible) p++;//poss[i][j] = 1;
    }

poss[1][0] = 0;

for (i=2; i<=4; i++) {
int max;
if (i==3) max = 5; else max = 9;

  for (j=0; j<=max; j++) {
    // copy
    int check[8];
    for (k=1; k<=7; k++)
      if (shown[i][k] == -1) check[k] = -1; else check[k] = digits[j][k];

    int sig = 1;

    for (s=0; s<=max; s++) if (s != j) {
      int can = 1;
      for (k=1; k<=7; k++)
        if (digits[s][k] == 0 && check[k] == 1) can = 0; else
          if (digits[s][k] == 1 && check[k] == 0) can = 0;
      if (can) sig = 0;
      }
    if (sig) p++;//sure[i][j] = 1;
    }
  }

// za 3

int x,y,z,t;


for (x=0; x<=2; x++)
for (y=0; y<=9; y++)
for (z=0; z<=5; z++)
for (t=0; t<=9; t++)
 if (poss[1][x] && poss[2][y] && poss[3][z] && poss[4][t] &&
    10*x+y <= 23 && 10*z+t <= 59) {
    p += x+y+z+t;
    }
if (p == 18) printf("114\n"); else printf("-1");

return 0;
}
