We solve this by generating the whole sonnet in reverse, starting from the final rhyme word.
when we expand the state L1-S8, we can choose from almost every word in vocabulary instead of just b possible words.