Build a tree-like structure where each path from root to a node represents a prefix of inserted words. Support inserting words and checking if a word or prefix exists.
Build a word dictionary that supports wildcard searches — a dot can match any letter.
Given a grid of letters and a list of words, find which words can be spelled by tracing a path through adjacent cells.
Find the longest word where every prefix of that word is also in the list.