Every time a matcher matches, it should be copied, so we can test other options with the original.

Since we're expanding the list, lets keep a list of ones that are done.

And, also, instead of checking the found combinations immediately every time we add stuff to them, wait until we know that they are >= the new words.