Если считать, что нет ограничения на то, что прямо по шагам надо заменять, то можно просто вернуть true ) Если верить в то, что заменяться должно только по шагам, то алгоритм должен быть другой и искать не дубли, а что в принципе есть буква, которую можно как временную использовать. Например, если "абвг... бава..." будет 1, т.к. в качестве временной буквы можно использовать г - она всё равно потом на а заменится, хотя "свободных" букв вроде как нет.