Here's my Python code using DFS.

```
class Solution:
# @param board, a list of lists of 1 length string
# @param word, a string
# @return a boolean
def exist(self, board, word):
res = False
for i in xrange(len(board)):
for j in xrange(len(board[i])):
if board[i][j] == word[0]:
res |= self.dfs(board, i, j, word, set())
if res:
break
return res
def dfs(self, board, i, j, word, walked):
if len(word) == 0 or (len(word) == 1 and board[i][j] == word[0]):
return True
res = False
if board[i][j] == word[0]:
walked.add((i,j))
if i > 0 and (i-1,j) not in walked:
res |= self.dfs(board, i-1, j, word[1:], walked)
if i < len(board)-1 and (i+1,j) not in walked:
res |= self.dfs(board, i+1, j, word[1:], walked)
if j > 0 and (i,j-1) not in walked:
res |= self.dfs(board, i, j-1, word[1:], walked)
if j < len(board[i])-1 and (i,j+1) not in walked:
res |= self.dfs(board, i, j+1, word[1:], walked)
return res
```

Somehow I got the wrong answer with the input

["ABCE",

"SFES",

"ADEE"]

and the target "ABCESEEEFS"

I think the answer is False because you can't find the word "ABCESEEEFS" sequentially in the board. However the expected answer is True. Am I misunderstood this problem?