docs: def _most_constrained_variable_chooser(problem, variables, domains):
      '''
      Choose the variable that has less available values.
      '''
      # the variable with fewer values available
      return sorted(variables, key=lambda v: len(domains[v]))[0]