code: def find(self, lo, hi, i, visited, prefix):
          
          if i in visited:
              return
          wordpos, is_word = self.wordlist.lookup(prefix, lo, hi)
          if wordpos is not None:
              if is_word:
                  self.found[prefix] = True
              visited.append(i)
              c = self.board[i]
              if c == 'Q': c = 'QU'
              prefix += c
              for j in self.neighbors[i]:
                  self.find(wordpos, hi, j, visited, prefix)
              visited.pop()
docs: Looking in square i, find the words that continue the prefix,
          considering the entries in self.wordlist.words[lo:hi], and not
          revisiting the squares in visited.