Задача №114904. Никита и CPM-строки

Никита получил в подарок на день рождения строку \(S\) длины \(N\). Строка \(S\) состоит из трех видов символов, C , P и M . Для каждого целого положительного числа \(K\) мы будем называть строку, состоящую из \(K\) символов C , \(K\) символов P и \(K\) символов M в таком порядке, CPM -строкой уровня \(K\). Например, CCPPMM — это CPM -строка уровня \(2\). Никите нравится CPM -строка уровня \(K\), поэтому он собирается создать CPM -строку уровня \(K\) из строки \(S\), используя следующие три операции любое количество раз в произвольном порядке:

  1. Никита удаляет первый символ \(S\).
  2. Никита удаляет последний символ \(S\).
  3. Никита удаляет символ \(S\), который не является ни первым, ни последним.
Поскольку использование операции \(3\) отнимает много времени, Никита хочет сделать CPM -строку уровня \(K\) с как можно меньшим количеством операций \(3\). Напишите программу, которая по строке \(S\) длины \(N\) и положительному целому числу \(K\), выводит наименьшее количество операций \(3\), необходимых для создания из \(S\) CPM -строки уровня \(K\). Если с помощью этих операций невозможно составить CPM -строку уровня \(K\), выведите вместо них \(-1\).

Входные данные

В первой строке ввода записаны два целых числа \(N\) и \(K\) — длина строки и необходимый уровень CPM -строки. Во второй строке содержится строка \(S\), состоящая из символов C , P , M .

Выходные данные

Выведите минимальное количество операций \(3\) необходимых для создания из \(S\) CPM -строки уровня \(K\). Если с помощью этих операций невозможно составить CPM -строку уровня \(K\), выведите вместо них \(-1\).

Система оценки

Группа Ограничения Баллы
\(1\) \(N \leqslant 21 \) \(30\)
\(2\) \(N \leqslant 3\,000\) \(30\)
\(3\) \(40\)

Примеры
Входные данные
10 2
PCMCPMPMMC
Выходные данные
2
Входные данные
9 3
CCCPPPMMM
Выходные данные
0
Входные данные
9 1
MMMPPPCCC
Выходные данные
-1
Сдать: для сдачи задач необходимо войти в систему