input: def solveTowerOfHanoi(num_disks, start_rod = 'A', end_rod = 'C', aux_rod = 'B'):
      if num_disks == 1:
          print("Move disk 1 from rod", start_rod, "to rod", end_rod)
          return
      solveTowerOfHanoi(num_disks - 1, start_rod, aux_rod, end_rod)
      print("Move disk", num_disks, "from rod", start_rod, "to rod", end_rod)
      solveTowerOfHanoi(num_disks - 1, aux_rod, end_rod, start_rod)
  
  # Example test case:
  # for solveTowerOfHanoi(4)
  # Output:
  # Move disk 1 from rod A to rod B
  # Move disk 2 from rod A to rod C
  # Move disk 1 from rod B to rod C
  # Move disk 3 from rod A to rod B
  # Move disk 1 from rod C to rod A
  # Move disk 2 from rod C to rod B
  # Move disk 1 from rod A to rod B
  # Move disk 4 from rod A to rod C
  # Move disk 1 from rod B to rod C
  # Move disk 2 from rod B to rod A
  # Move disk 1 from rod C to rod A
  # Move disk 3 from rod B to rod C
  # Move disk 1 from rod A to rod B
  # Move disk 2 from rod A to rod C
  # Move disk 1 from rod B to rod C
output:     solveTowerOfHanoi(num_disks - 1, start_rod, aux_rod, end_rod)
      print("Move disk", num_disks, "from rod", start_rod, "to rod", end_rod)
      solveTowerOfHanoi(num_disks - 1, aux_rod, end_rod, start_rod)