перепроверка только изменившейся части последовательности, когда это возможно
самая оптимизированная версия, с пропуском заведомо невалидных веток перестановки
небольшие косметические правки в F#-версии