word exists in the grid. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Word Search isSolution(prefix, word) // prefix is our built up solution // return prefix == word getCandidates(position, visited, board, letter) // get unvisited adjacent positions that match letter backup(prefix, position, visited) // remove last letter from previous // remove position from visited search(board, word, prefix, position, visited) // return true if isSolution(prefix, word) // for each getCandidates // add letter(position) to prefix // add position to visited // search from next position // if not found backup