Here are some notes on my own approach:
1. Prep work
I did a lot of prep work ahead of time so that the combinatorial engine could run as efficiently as possible.
For example, I took each word in my word list and shifted it in a circular fashion into all possible positions around the wheel. I stored these results in a lookup array for quick referencing ...