docs: def bysize(words):
      """
      take a list of words and return a dict of sets sorted by word length
      e.g.
      ret[3]=set(['ant', 'cat', 'dog', 'pig'])
      ret[4]=set(['frog', 'goat'])
      ret[5]=set(['horse'])
      ret[8]=set(['elephant'])
      """
      ret = {}
      for w in words:
          if len(w) not in ret:
              ret[len(w)] = set()
          ret[len(w)].add(w)
      return ret