cache = {}
def H(num, fr, to, aux):
key = (num, fr, to, aux)
if key in cache:
return cache[key]
if num == 1:
return f' {fr} -> {to},'
else:
s = H(num - 1, fr, aux, to)
s = s + f' {fr} -> {to},'
s = s + H(num - 1, aux, to, fr)
cache[key] = s
return s
if __name__ == '__main__':
print(H(25, 1, 2, 3))