Задача №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\), используя следующие три операции любое количество раз в произвольном порядке:
- Никита удаляет первый символ \(S\).
- Никита удаляет последний символ \(S\).
- Никита удаляет символ \(S\), который не является ни первым, ни последним.
В первой строке ввода записаны два целых числа \(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