2
def findWords(self, board: List[List[str]], words: List[str]) -> List[str]:4
trie = self.make_trie(words)6
for i in range(len(board)):7
for j in range(len(board[0])):8
self.dfs(i, j, board, trie, visited, "", solution)11
def dfs(self, i, j, board, trie, visited, word, solution):13
if len(trie.keys()) == 0:20
if i < 0 or i == len(board) or j < 0 or j == len(board[0]):22
if board[i][j] not in trie:24
if len(trie[board[i][j]]) == 0:28
neighbours = [(i, j - 1), (i - 1, j), (i, j + 1), (i + 1, j)]29
for n_x, n_y in neighbours:39
visited.remove((i, j))41
def make_trie(self, words):46
if char not in current:48
current = current[char]