| 1 | Start at cell | (0,0) | 0 | {} | Check if board[0][0] == word[0] | [A, B, C]
[D, E, F]
[G, H, I] |
| 2 | Match first letter | (0,0) | 0 | {} | board[0][0] == 'A' matches word[0] 'A' | [A, B, C]
[D, E, F]
[G, H, I] |
| 3 | Mark visited | (0,0) | 0 | {(0,0)} | Mark board[0][0] as visited '#' | [#, B, C]
[D, E, F]
[G, H, I] |
| 4 | Explore neighbors | (1,0) | 1 | {(0,0)} | Check board[1][0] == word[1] 'B'? | [#, B, C]
[D, E, F]
[G, H, I] |
| 5 | No match | (1,0) | 1 | {(0,0)} | board[1][0] == 'D' != 'B', backtrack | [#, B, C]
[D, E, F]
[G, H, I] |
| 6 | Explore neighbors | (0,1) | 1 | {(0,0)} | Check board[0][1] == word[1] 'B'? | [#, B, C]
[D, E, F]
[G, H, I] |
| 7 | Match | (0,1) | 1 | {(0,0),(0,1)} | Mark board[0][1] as visited '#' | [#, #, C]
[D, E, F]
[G, H, I] |
| 8 | Explore neighbors | (0,2) | 2 | {(0,0),(0,1)} | Check board[0][2] == word[2] 'C'? | [#, #, C]
[D, E, F]
[G, H, I] |
| 9 | Match | (0,2) | 2 | {(0,0),(0,1),(0,2)} | Mark board[0][2] as visited '#' | [#, #, #]
[D, E, F]
[G, H, I] |
| 10 | Word complete | N/A | 3 | {(0,0),(0,1),(0,2)} | All letters matched, return true | [#, #, #]
[D, E, F]
[G, H, I] |
| 11 | Backtrack | (0,2) | 2 | {(0,0),(0,1)} | Unmark board[0][2] | [#, #, C]
[D, E, F]
[G, H, I] |
| 12 | Backtrack | (0,1) | 1 | {(0,0)} | Unmark board[0][1] | [#, B, C]
[D, E, F]
[G, H, I] |
| 13 | Backtrack | (0,0) | 0 | {} | Unmark board[0][0] | [A, B, C]
[D, E, F]
[G, H, I] |
| 14 | Return | N/A | N/A | {} | Word found, exist() returns true | [A, B, C]
[D, E, F]
[G, H, I] |