Олимпиадный тренинг

Задача . F. Новый год и смена хендла


Наступает новый год. Это значит, что на codeforces пришла пора менять хендлы. Мишке захотелось поменять свой хендл, но таким образом, чтобы люди не забыли, кто он такой.

Чтобы все получилось так, как он хочет, он решил менять только регистры букв. Более формально, за одну смену хендла он может выбрать любой отрезок своего хендла \([i; i + l - 1]\) и сделать tolower или toupper ко всем буквам своего хендла на этом отрезке (более формально, поменять все строчные буквы на отрезке на соответствующие прописные или наоборот). Длина \(l\) фиксирована для всех смен.

Так как на codeforces нельзя слишком часто менять хендлы, всего Мишка может сделать не более \(k\) таких операций. Какого минимального значения может быть \(min(lower, upper)\) (где \(lower\) — количество строчных букв, а \(upper\) — количество прописных букв) после оптимальной последовательности смен?

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

Первая строка входных данных содержит три целых числа \(n, k\) и \(l\) (\(1 \le n, k, l \le 10^6, l \le n)\) — длину хендла Мишки, количество смен и длину отрезка.

Вторая строка входных данных содержит одну строку \(s\), состоящую из \(n\) строчных и прописных букв латинского алфавита — хендл Мишки.

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

Выведите одно целое число — минимальное значение, которого может достигнуть \(min(lower, upper)\) после того, как Мишка сменит свой хендл не более \(k\) раз так, как описано в условии задачи.


Примеры
Входные данныеВыходные данные
1 7 1 4
PikMike
0
2 15 2 2
AaAaAAaaAAAAaaA
2
3 14 2 6
aBcdEFGHIJklMn
0
4 9 2 2
aAaAAAaaA
1

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя