Не очень понимаю, почему цикл не прерывается? Вроде как добавляем в список строку, если она не "end" и считываем строку для следующей итерации сравнения, но похоже, что нет.