input: Write a function to solve the Tower of Hanoi problem and print the steps.
  assert hanoi(3, ([3, 2, 1], "A"), ([], "B"), ([], "C"))==None
  assert hanoi(2, ([2, 1], "A"), ([], "B"), ([], "C"))==None
  assert hanoi(1, ([1], "A"), ([], "B"), ([], "C"))==None
output: def hanoi(n, source, target, auxiliary):
      def move(n, source, target, auxiliary):
          if n == 1:
              print(f"Move disk 1 from {source[1]} to {target[1]}")
              target[0].append(source[0].pop())
              return
          move(n-1, source, auxiliary, target)
          print(f"Move disk {n} from {source[1]} to {target[1]}")
          target[0].append(source[0].pop())
          move(n-1, auxiliary, target, source)
  
      move(n, source, target, auxiliary)