code: def _rotate(pair, step):
          
          step = Step(step)
          movement = {
              "U": "RFLB", 
              "D": "LFRB", 
              "R": "FUBD", 
              "L": "FDBU", 
              "F": "URDL", 
              "B": "ULDR", 
              }[step.face]
          movement = {
              movement[i]: movement[(i + step.is_clockwise + (-1 * step.is_counter_clockwise) + (2 * step.is_180)) % 4]
              for i in range(4)
              }
          for cubie in pair:
              if step.face not in cubie:
                  if cubie.type == "edge":
                      result_edge = cubie.copy()
                  else:
                      result_corner = cubie.copy()
              else:
                  result = {}
                  for face, square in cubie:
                      if face not in movement:
                          result[face] = square
                      else:
                          result[movement[face]] = square
                  if len(result) == 2:
                      result_edge = Edge(**result)
                  else:
                      result_corner = Corner(**result)
          return (result_corner, result_edge)
docs: Simulate the cube rotation by updating the pair.