Ничего не читал в инете про задачу, решил тупым рекурсивным перебором. На метод change(LinkedList<Integer> shaftA, LinkedList<Integer> shaftB, char a1, char b1, char a, char b, char c, int numRings) можно внимания не обращать, писал его чтобы заменить if-ы, но если его использовать, то валик не проходит еще по причине того, что метод moveRing(char a, char b, char c, int numRings) валик перестаёт считать рекурсивным. Всё работает нормально до numRings = 4. При numRings = 5 я окончания расчётов тупо не дождался на своём компе. :) Хоть количество действий соответствуют условию и вывод как в задаче, но валик упорно не принимает по последним 2-м пунктам. Подскажите плз, что не так на ваш взгляд?