from copy import deepcopy

QUESTION_NUMBER = 5

def ReadFile():
    for Part in open("data%s.txt"%QUESTION_NUMBER,"r").read().split():
        if Part.isdigit():
            Part = int(Part)
        yield Part

InputGenerator = ReadFile()

Next = InputGenerator.next

def WriteLine(Line):
    open("out%s.txt"%QUESTION_NUMBER,"a").write(str(Line) + "\n")
#=================


Maze = []

Points = []

for i in xrange(10):
    Chr = Next()
    
    Maze.append(Chr)
    
    for j in range(10):
        Chr = Maze[i][j]
        if Chr>="A" and Chr<="F":
            Points.append((Chr,(i,j)))
Points.sort()

def PosTargets(Targ,Curs):
    global Grid
    Pos = []
    Targ = tuple(Targ)
    
    for Dir in (
        (1,0),
        (-1,0),
        (0,-1),
        (0,1),
        ):
        Cur = list(Targ)


        while Cur[0]>=0 and Cur[0]<10 and Cur[1]>=0 and Cur[1]<10 and (Maze[Cur[0]][Cur[1]]!="#"):
            Last = Cur[:]
            Cur[0] += Dir[0]
            Cur[1] += Dir[1]

        
        Last = tuple(Last)
        if Last!=Targ:
            Pos.append(Last)
            
            
            
            if not Targ in Grid:
                Grid[Targ] = {}

            if not Last in Grid:
                Grid[Last] = {}
            
            Diffa = abs(Targ[0]-Last[0])
            Diffb = abs(Targ[1]-Last[1])
            
            Dist = Diffa + Diffb

            if not Last in Grid[Targ]:
                Grid[Targ][Last] = 9999999
            
            if not Targ in Grid[Last]:
                Grid[Last][Targ] = 9999999
            
            if Dist<Grid[Targ][Last]:
                Grid[Targ][Last] = Dist
            if Dist<Grid[Last][Targ]:
                Grid[Last][Targ] = Dist
            
            if not Last in Curs:
                Curs.append(Last)
                PosTargets(Last,deepcopy(Curs))
                
            if not Last in CURS:
                CURS.append(Last)
                

            
            
            
CURS = []

Grid = {}

PosTargets(Points[0][1],[])

for PosPlace in CURS:
    if not PosPlace in Grid:
        Grid[PosPlace] = {}
    for PosPlaceb in CURS:
        if not PosPlaceb in Grid[PosPlace]:
            Grid[PosPlace][PosPlaceb] = 9999999
            


Changed= True

#for a in Grid:
    #print a
    #for b in Grid[a]:
        #if Grid[a][b]!=9999999:
            #print "  ",b, Grid[a][b]
    #print


while Changed:
    Changed= False
    
    for From in Grid:
        if Changed: break
        for To in Grid[From]:
            for Second in Grid[To]:
                if Second!=To:
                    if Grid[From][To]<9999999 and Grid[To][Second]<9999999:
                        if Changed: break
                        SecDist = Grid[From][To] + Grid[To][Second]
                        #print SecDist, Grid[From][Second]
                        #raw_input()
                        if Grid[From][Second]>SecDist :
                            Grid[From][Second] = SecDist
                            Grid[Second][From] = SecDist
                            Changed = True
            
            
for i in xrange(5):
    #print Points[i][1],Points[i+1][1]
    WriteLine(Grid[Points[i][1]][Points[i+1][1]])
    print Grid[Points[i][1]][Points[i+1][1]]

