import time
n = 21
t1 = []
t2 = []
t3 = []
moves = 0
def init():
global moves
movs = 0
for i in range(n, 0, -1):
t1.append(i)
def printTowers():
print()
print(t1)
print(t2)
print(t3)
def moveAB():
moveXX(t1, t2)
def moveAC():
moveXX(t1, t3)
def moveBC():
moveXX(t2, t3)
def moveXX(a1,a2): #moves between two given arrays
# time.sleep(0.3)
if len(a1) == 0:
a1.append(a2.pop())
elif len(a2) == 0:
a2.append(a1.pop())
elif a1[len(a1)-1] > a2[len(a2)-1]:
a1.append(a2.pop())
else:
a2.append(a1.pop())
# printTowers()
def isSolved():
if len(t3) == n:
return True
return False
def move3Even():
global moves
moveAB()
moveAC()
moveBC()
moves = moves + 3
def move3Odd():
global moves
moveAC()
if not isSolved(): #For odd, it will always end after AC
moveAB()
moveBC()
moves += 3
else:
moves += 1
def goEven():
while not isSolved():
move3Even()
def goOdd():
while not isSolved():
move3Odd()
init()
moves += 0
if n%2 == 1:
goOdd()
else:
goEven()