Благодаря правильному решению понял свою ошибку: нужно вначале проверять самые младшие классы и постепенно переходить к проверке старых классов. Подскажите, плиз, почему. Своя версия появилась, но не уверен, что она абсолютно правильная. И как можно такой подход заменить, если можно?