Посидел - подумал, нарисовал схему. Здесь проверяются все варианты
Ошибка в логике или в синтаксисе?
P.s. Оптимизацией программы не сильно занимался. Пока волнует ошибка.