// Word Search II — HARD
// Category: backtracking
Given an `m x n` board of characters and a list of strings `words`, return all words on the board.
Each word must be constructed from letters of sequentially adjacent cells (horizontally or vertically adjacent). The same letter cell may not be used more than once in a word.
**Hint:** Build a Trie from the words, then DFS with backtracking.
Example: board = [["o","a","a","n"],["e","t","a","e"],["i","h","k","r"],["i","f","l","v"]], words = ["oath","pea","eat","rain"]
Output: ["eat","oath"]