code: def _words_by_score(words, score, least_to_most, n=None):
      
      if words.shape != score.shape:
          raise ValueError('`words` and `score` must have the same shape')
  
      if n is not None and (n <= 0 or n > len(words)):
          raise ValueError('`n` must be in range [0, len(words)]')
  
      indices = np.argsort(score)
      if not least_to_most:
          indices = indices[::-1]
  
      ordered_words = words[indices]
  
      if n is not None:
          return ordered_words[:n]
      else:
          return ordered_words
docs: Order a vector of `words` by a `score`, either `least_to_most` or reverse. Optionally return only the top `n`
      results.