input: from typing import List, Tuple
  
  
  def hanoi_move(discs: List[Tuple[int, str]], source: str, target: str) -> None:
      """Write a function to solve the Towers of Hanoi game, where each disk is represented 
      by a tuple (disk_number, position), and the source, target, and spare posts are represented by their labels.
      The goal is to move all disks from the source post to the target post.
      
      >>> starting = [(1, "A"), (2, "A"), (3, "A")]
      >>> target = []
      >>> spare = []
      >>> hanoi_move(starting, "A", "C")
      Moving disk 1 from A to C
      Moving disk 2 from A to B
      Moving disk 1 from C to B
      Moving disk 3 from A to C
      Moving disk 1 from B to A
      Moving disk 2 from B to C
      Moving disk 1 from A to C
      """
      if len(discs) == 1:
          disk = discs.pop(0)
          print("Moving disk {0} from {1} to {2}".format(disk[0], source, target))
      else:
          spare = "".join({i[1] for i in discs} - {source, target}) or target
          hanoi_move([d for i, d in enumerate(discs) if i != 0], source, spare)
          hanoi_move(discs[:1], source, target)
          hanoi_move([d for i, d in enumerate(discs) if i != 0], spare, target)
output:     if len(discs) == 1:
          disk = discs.pop(0)
          print("Moving disk {0} from {1} to {2}".format(disk[0], source, target))
      else:
          spare = "".join({i[1] for i in discs} - {source, target}) or target
          hanoi_move([d for i, d in enumerate(discs) if i != 0], source, spare)
          hanoi_move(discs[:1], source, target)
          hanoi_move([d for i, d in enumerate(discs) if i != 0], spare, target)