Search parts of the pattern forwards and back

This is *very* slow, so there's got to be a better way of doing this.
Pre-caching the word list by length, maybe?