#P16333. [Ucpc2024]俄罗斯旋转寿司

[Ucpc2024]俄罗斯旋转寿司

题目描述

晋宇是一名世界顶级赌徒兼美食家。他来到一家名为“俄罗斯旋转寿司”的餐厅参加挑战。

挑战使用圆形传送带上的 NN 个寿司。挑战者需要在表情不发生变化的情况下吃下 KK 个寿司。部分寿司中放有大量芥末。

挑战流程如下:

  1. 店主在圆形传送带上等间距摆放 NN 个寿司,并当着挑战者的面向其中若干个加入芥末,因此挑战者起初知道芥末寿司的位置;
  2. 所有寿司外观完全相同;
  3. 挑战者蒙上眼睛,店主随机旋转传送带;
  4. 挑战者睁眼后,传送带开始顺时针转动。每当一个寿司来到挑战者面前,他必须立即处理它。因此,他会从睁眼时位于面前的寿司开始,按逆时针顺序依次遇到寿司。

传送带被随机旋转后,寿司的起始位置变得未知

店主还出售“跳过寿司券”。挑战者必须在蒙眼前购买若干张券。每使用一张券,就可以跳过面前的一个寿司而不吃它。被跳过的寿司会从传送带上移除,店主随后会告诉挑战者其中是否含有芥末。

如果挑战者吃到芥末寿司而表情发生变化,或者因为跳过太多寿司而最终无法吃满 KK 个寿司,挑战失败。

晋宇完全不能吃辣。他会根据每次跳过后得到的信息采取最优策略,并希望无论传送带最初被旋转到什么位置,都一定能够成功。

已知蒙眼前观察到的芥末寿司分布,求他至少需要购买多少张跳过券。若无论购买多少张券都可能失败,输出 -1

输入格式

第一行输入两个整数 N,KN,K

1KN200000.1\le K\le N\le 200000.

第二行输入一个长度为 NN、仅由 OX 组成的字符串。

ii 个字符表示蒙眼前沿逆时针方向数第 ii 个位置的寿司:

  • O:芥末寿司;
  • X:普通寿司。

输出格式

输出保证挑战成功所需购买的最少跳过券数量。

若无论购买多少张券都存在失败的可能,输出 -1

样例 1

输入

6 2
OXXOXX

输出

3

样例 2

输入

5 1
XXOXX

输出

-1

样例 3

输入

4 4
XXXX

输出

0

样例 4

输入

8 2
OXXOXXOX

输出

5

样例 5

输入

8 1
XOXXOOXO

输出

6