#P16333. [Ucpc2024]俄罗斯旋转寿司
[Ucpc2024]俄罗斯旋转寿司
题目描述
晋宇是一名世界顶级赌徒兼美食家。他来到一家名为“俄罗斯旋转寿司”的餐厅参加挑战。
挑战使用圆形传送带上的 个寿司。挑战者需要在表情不发生变化的情况下吃下 个寿司。部分寿司中放有大量芥末。
挑战流程如下:
- 店主在圆形传送带上等间距摆放 个寿司,并当着挑战者的面向其中若干个加入芥末,因此挑战者起初知道芥末寿司的位置;
- 所有寿司外观完全相同;
- 挑战者蒙上眼睛,店主随机旋转传送带;
- 挑战者睁眼后,传送带开始顺时针转动。每当一个寿司来到挑战者面前,他必须立即处理它。因此,他会从睁眼时位于面前的寿司开始,按逆时针顺序依次遇到寿司。

传送带被随机旋转后,寿司的起始位置变得未知
店主还出售“跳过寿司券”。挑战者必须在蒙眼前购买若干张券。每使用一张券,就可以跳过面前的一个寿司而不吃它。被跳过的寿司会从传送带上移除,店主随后会告诉挑战者其中是否含有芥末。
如果挑战者吃到芥末寿司而表情发生变化,或者因为跳过太多寿司而最终无法吃满 个寿司,挑战失败。
晋宇完全不能吃辣。他会根据每次跳过后得到的信息采取最优策略,并希望无论传送带最初被旋转到什么位置,都一定能够成功。
已知蒙眼前观察到的芥末寿司分布,求他至少需要购买多少张跳过券。若无论购买多少张券都可能失败,输出 -1。
输入格式
第一行输入两个整数 。
第二行输入一个长度为 、仅由 O 和 X 组成的字符串。
第 个字符表示蒙眼前沿逆时针方向数第 个位置的寿司:
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