Дана задача по программированию
Дана строка S, состоящая из

маленьких латинских букв. За один ход Вам разрешается удалить один или несколько подряд идущих одинаковых символов. Необходимо удалить все символы из строки S за минимальное количество ходов.
Я использовал следующий алгоритм для её решения.
1)Все подряд идущие одинаковые меняем на 1 символ.
2) В строке находим два одинаковых символа, чтобы между ними было минимально возможное число других символов.
3)Удаляем все символы между найденными. К количеству ходов добавляем количество удаленных символов.
4) повторяем 1-3 до тех пор, пока каждый символ в строке не станет уникальным(то есть встречаться только раз).
5)К количеству ходов прибавляем количество оставшихся символов.
Проблема в том, что алгоритм не всегда срабатывает. Помогите привести пример, не работающий на данном алгоритме и более правильный алгоритм для решения.