I have some serious doubts on the scale of the operation, but perhaps you could try applying Regex::PreSuf on the dictionary words, and match the string using this constructed regex. It looks fine in theory, except probably for memory constraints, and perhaps more stringent constraints on the size of the compiled regex.