code: def complete_acquaintance_strategy(qubit_order: Sequence[ops.Qid],
                                     acquaintance_size: int=0,
                                     ) -> circuits.Circuit:
      
      if acquaintance_size < 0:
          raise ValueError('acquaintance_size must be non-negative.')
      elif acquaintance_size == 0:
          return circuits.Circuit(device=UnconstrainedAcquaintanceDevice)
  
      if acquaintance_size > len(qubit_order):
          return circuits.Circuit(device=UnconstrainedAcquaintanceDevice)
      if acquaintance_size == len(qubit_order):
          return circuits.Circuit.from_ops(
                  acquaint(*qubit_order), device=UnconstrainedAcquaintanceDevice)
  
      strategy = circuits.Circuit.from_ops(
              (acquaint(q) for q in qubit_order),
              device=UnconstrainedAcquaintanceDevice)
      for size_to_acquaint in range(2, acquaintance_size + 1):
          expose_acquaintance_gates(strategy)
          replace_acquaintance_with_swap_network(
                  strategy, qubit_order, size_to_acquaint)
      return strategy
docs: Returns an acquaintance strategy capable of executing a gate corresponding
      to any set of at most acquaintance_size qubits.
  
      Args:
          qubit_order: The qubits on which the strategy should be defined.
          acquaintance_size: The maximum number of qubits to be acted on by
          an operation.
  
      Returns:
          An circuit capable of implementing any set of k-local
          operation.