Пока очевидно лишь то, что что поставленная задача не имеет тривиального решения.
Смешно, но имеет.
Дело в том, что количество вариантов растет очень быстро. Поэтому граница, при которой хватит самого тупого алгоритма (а он тут есть), почти не будет отличаться от границы, в которую упрется изощренный (если его удастся найти). И если она не пройдет ровно там, где вам жизненно необходимо вытянуть лишний десяток-полтора, то изощренный алгоритм не понадобится - либо будет излишним, либо все равно не поможет.