я бы решал графом, каждая буква - вершина, каждая вершина имеет направленный граф к дугой вершине.
также есть алгоритм (не помню как называется), который выбрасывает часть букв и определяет может ли быть такое слово в принципе, в зависимости от позиции букв.
и вот после этого проверять по словарю.