The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, because he has business of national importance. For example, he has to pay an official visit to square *t*. As the king is not in habit of wasting his time, he wants to get from his current position *s* to square *t* in the least number of moves. Help him to do this.

In one move the king can get to the square that has a common side or a common vertex with the square the king is currently in (generally there are 8 different squares he can move to).
The first line contains the chessboard coordinates of square *s*, the second line — of square *t*.

Chessboard coordinates consist of two characters, the first one is a lowercase Latin letter (from a to h), the second one is a digit from 1 to 8.
#xet mA == mB: //dong
def check_in_row(colA,rowA,colB,rowB):
    #number of king moves => n = abs(nA - nB)
    numberOfKingMove = abs(colA - colB)
    listMove = []
    if colA > colB:
        listMove = ['L'] * numberOfKingMove
    else:
        listMove = ['R'] * numberOfKingMove
    return listMove
#xet nA == nB: // cot
def check_in_col(colA,rowA,colB,rowB):
    ##number of king moves => n = abs(mA - mB)
    numberOfKingMove = abs(rowA - rowB)
    listMove = []
    if rowA > rowB:
        listMove = ['U'] * numberOfKingMove
    else:
        listMove = ['D'] * numberOfKingMove
    return listMove
#xet abs(nA - nB) == abs(mA- mB) // 2 duong cheo
def check_in_cross(colA,rowA,colB,rowB):
    numberOfKingMove = abs(rowA - rowB)
    listMove = []
    if colA > colB:
        if rowA > rowB:
            listMove = ['LU'] * numberOfKingMove
        else:
            listMove = ['LD'] * numberOfKingMove
    else:
        if rowA > rowB:
            listMove = ['RU'] * numberOfKingMove
        else:
            listMove = ['RD'] * numberOfKingMove
    return listMove
#ko nam tren dong, cot, 2 duong cheo
def check_special_case(colA,rowA,colB,rowB):
    leftUp = [-1, -1]
    leftDown = [1, -1]
    rightUp = [-1, 1]
    rightDown = [1, 1]

    temp = []

    if rowA < rowB and colA > colB:
        temp = leftDown
    elif rowA < rowB and colA < colB:
        temp = rightDown
    elif rowA > rowB and colA > colB:
        temp = leftUp
    elif rowA > rowB and colA < colB:
        temp = rightUp

    tempRow = rowA
    tempColumn = colA

    while tempRow != rowB and tempColumn != colB:
        tempRow += temp[0]
        tempColumn += temp[1]

    crossMoves = check_in_cross(colA, rowA, tempColumn, tempRow)
    straintMoves = []
    if tempRow == rowB:
        straintMoves = check_in_row(tempColumn, tempRow, colB, rowB)
    elif tempColumn == colB:
        straintMoves = check_in_col(tempColumn, tempRow, colB, rowB)

    return crossMoves + straintMoves

a = input()
b = input()

#tach ky tu dau tien => a => asci(a)%97 - 1 => lay dc gia tri cot
#tach ky tu thu 2 => 8 - 1 => lay dc gia tri dong 
#co toa do diem bat dau A(mA,nA)
#co toa do diem ket thuc B(mB, nB)
colA = ord(a[0])%97
rowA = abs(int(a[1]) - 8)
colB = ord(b[0])%97
rowB = abs(int(b[1]) - 8)

result = check_special_case(colA,rowA,colB,rowB)
result_count = len(result)
print(result_count)
for move in result:
    print(move)