Добрый день, алгоритм отрабатывает верно с разными входными данными, палиндромы так же отрабатывает, пожалуйста подскажите в чем причина? Логика поиска пар ( метод getPairs()): берем первое слово из списка, переворачиваем, сравниваем с последующими словами в списке. Если есть совпадение - добавляем пару, удаляем слово исходник и перевернутое слово, break. Если мы дошли до конца списка и слово не найдено (1 ый if не отработал и i == words.size - 1) удаляем это слово из списка. В методе main вызываем метод getPairs пока words.size > 1 так как последнее оставшееся слово проверять не надо, у него пары все равно не будет.