# 1089번. 엘리베이터
init=''init+='###...#.###.###.#.#.###.###.###.###.###'init+='#.#...#...#...#.#.#.#...#.....#.#.#.#.#'init+='#.#...#.###.###.###.###.###...#.###.###'init+='#.#...#.#.....#...#...#.#.#...#.#.#...#'init+='###...#.###.###...#.###.###...#.###.###'# print(len(init))
numbers=[[[]foriinrange(5)]foriinrange(10)]# 0~9 숫자 모양 만들어주기
foriinrange(5):# 5줄
forjinrange(0,39,4):# 3개씩
numbers[j//4][i]=list(init[i*39+j:i*39+j+3])n=int(input())# n 개 숫자 담아줄 리스트
inNum=[[[]foriinrange(5)]foriinrange(n)]foriinrange(5):s=list(input().rstrip())# 한줄 받고
forjinrange(0,n*3+(n-1),4):# 3칸씩 끊기. 범위 조심
inNum[j//4][i]=list(s[j:j+3])# 비교해주기 (numbers, inNum)
temp=[[]foriinrange(n)]foriinrange(n):# 하나씩 꺼내서
forjinrange(10):# 10개 다 비교
flag=Trueforpinrange(5):# 5줄
ifnotflag:breakforqinrange(3):# 3개
ifinNum[i][p][q]=='#'andnumbers[j][p][q]=='.':# 이건 매칭 할 수 없다.
flag=Falsebreakifflag:# 이건 매칭 할 수 있음
temp[i].append(j)# 모든 조합 만들기
c=[0foriinrange(n)]foriinrange(n):forjinrange(len(temp[i])):c[i]+=temp[i][j]flag=Trueforiinrange(n):iflen(temp[i])==0:flag=Falsebreakifflag:ans=0foriinrange(n):ans*=10ans+=c[i]/len(temp[i])print(ans)else:print(-1)