input: Write a function to solve the Towers of Hanoi game by moving all disks from one rod to another in the fewest number of moves. The function should print each move. If there are no disks, the function should return without any output.
  
  def hanoi(n, source, spare, target):
      if n == 1:
          disk = source.pop(0)
          print("Moving disk {0} from {1} to {2}".format(disk[0], disk[1], target[1]))
          target.insert(0, disk)
      else:
          hanoi(n-1, source, target, spare)
          disk = source.pop(0)
          print("Moving disk {0} from {1} to {2}".format(disk[0], disk[1], target[1]))
          target.insert(0, disk)
          hanoi(n-1, spare, source, target)
  
  assert hanoi(0, [], [], [])==None
  assert hanoi(1, [(1, "A")], [], [])==None
  assert hanoi(2, [(1, "A"), (2, "A")], [], [])==None
  assert hanoi(3, [(1, "A"), (2, "A"), (3, "A")], [], [])==None
  assert hanoi(4, [(1, "A"), (2, "A"), (3, "A"), (4, "A")], [], [])==None
output: def hanoi(n, source, spare, target):
      if n == 0:
          return
      hanoi(n-1, source, target, spare)
      disk = source.pop(0)
      print("Moving disk {0} from {1} to {2}".format(disk[0], disk[1], target[1]))
      target.insert(0, disk)
      hanoi(n-1, spare, source, target)