[JOI 2020 Final] JJOOII 2
题目描述
定义有连续 $K$ 个 $\tt J$ 和连续 $K$ 个 $\tt O$ 和连续 $K$ 个 $\tt I$ 组成的字符串为 $K$ 阶 JOI 串。
比如,$\tt JJOOII$ 为 $2$ 阶 JOI 串,**但是,注意要有顺序**,比如 $\tt OOJJII$ 就不是 $2$ 阶 JOI 串。
现在,给定一个长度为 $N$ 的字符串 $S$,可以对他进行 $3$ 种操作:
- 操作 $1$:删除 $S$ 开头的字符
- 操作 $2$:删除 $S$ 结尾的字符
- 操作 $3$:删除 $S$ 除了开头和结尾之外的一个字符
我们要通过这些操作让 $S$ 变为 $K$ 阶 JOI 串。
但是,我们想让操作 $3$ 尽量的少。
所以我们想知道,变为 $K$ 阶 JOI 串操作 $3$ 最少需要进行多少次?
如果不能变为 $K$ 阶 JOI 串,那么输出 $-1$。
输入输出格式
输入格式
第一行两个整数 $N,K$ 代表字符串长度和要构造的 JOI 串的阶数。
第二行 $N$ 个字符代表字符串 $S$。
输出格式
一行一个整数代表操作 $3$ 的最小进行次数。
如果不能变为 $K$ 阶 JOI 串,那么输出 $-1$。
输入输出样例
输入样例 #1
10 2
OJIJOIOIIJ
输出样例 #1
2
输入样例 #2
9 3
JJJOOOIII
输出样例 #2
0
输入样例 #3
9 1
IIIOOOJJJ
输出样例 #3
-1
说明
#### 样例 1 解释
1. 进行一次操作 $1$,变为 $\tt JIJOIOIIJ$。
2. 进行一次操作 $2$,变为 $\tt JIJOIOII$。
3. 进行一次操作 $3$,删掉字符 $2$,变为 $\tt JJOIOII$。
4. 进行一次操作 $3$,删掉字符 $4$,变为 $\tt JJOOII$。
#### 样例 2 解释
$\tt JJJOOOIII$ 已经是 $3$ 阶 JOI 串了,所以不需要进行操作。
#### 样例 3 解释
$\tt IIIOOOJJJ$ 无法变为 $1$ 阶 JOI 串,无解。
#### 数据规模与约定
**本题采用捆绑测试。**
- Subtask 1(1 pts):$N \le 21$。
- Subtask 2(12 pts):$N \le 3000$。
- Subtask 3(87 pts):无特殊限制。
对于 $100\%$ 的数据:
- $3 \le N \le 2 \times 10^5$。
- $1 \le K \le \dfrac{N}{3}$。
- $S$ 只包含 $\tt J$,$\tt O$,$\tt I$ 且长度为 $N$。
#### 说明
翻译自 [第19回日本情報オリンピック 本選](https://www.ioi-jp.org/joi/2019/2020-ho/index.html) [B JJOOII 2](https://www.ioi-jp.org/joi/2019/2020-ho/2020-ho-t2.pdf)。