#L3253. 「JOI 2020 Final」JJOOII 2

    ID: 4299 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>字符串其他双指针扫描贪心数据结构前缀和滑动窗口

「JOI 2020 Final」JJOOII 2

题目描述

译自 JOI 2020 Final T2「JJOOII 2 / JJOOII 2」

比太郎收到了一个长度为 NN 的字符串 SS 作为他的生日礼物,且这个字符串仅由 J,O,I\texttt{J},\texttt{O},\texttt{I} 组成。

对于所有正整数 KK,若一个字符串仅由 KK 个连续的 J\texttt JKK 个连续的 O\texttt OKK 个连续的 I\texttt I 顺次连接而成,则我们称这个字符串为 KK 级 JOI-串。 例如,JJOOII\texttt{JJOOII} 就是一个 22 级 JOI-串。

比太郎热衷于构造 KK 级 JOI-串,于是他打算通过以任意顺序使用以下三个操作任意次来将字符串 SS 构造为一个 KK 级 JOI-串:

  1. 删除 SS 的开头字符。
  2. 删除 SS 的结尾字符。
  3. 删除 SS 的一个非开头且非结尾的字符。

由于操作 3 十分耗时,比太郎想要尽可能少地使用操作 3。 请对于给定的长度为 NN 的字符串 SS 和一个正整数 KK,输出将其构造为 KK 级 JOI-串所需要的最少的操作 3 的次数。 若无解,请输出 1-1

输入格式

第一行,两个正整数 N,KN,K。 第二行,一个字符串 SS

输出格式

一行,一个整数,表示操作 3 的最少次数或 1-1

样例 1

输入

10 2
OJIJOIOIIJ

输出

2

样例解释
你可以通过按以下顺序执行操作来将 SS 构造为一个 KK 级 JOI-串:

  1. 使用操作 1,SS 变为 JIJOIOIIJ\texttt{JIJOIOIIJ}
  2. 使用操作 2,SS 变为 JIJOIOII\texttt{JIJOIOII}
  3. 使用操作 3 删除第 22 个字符,SS 变为 JJOIOII\texttt{JJOIOII}
  4. 使用操作 3 删除第 44 个字符,SS 变为 JJOOII\texttt{JJOOII}

可以证明没有更优解,故输出 22

样例 2

输入

9 3
JJJOOOIII

输出

0

显然,在这个样例中你甚至不需要任何操作。

样例 3

输入

9 1
IIIOOOJJJ

输出

-1

显然,在这个样例中你的一切操作都是无用功。

数据范围与提示

对于所有测试数据,3N2×1053 \le N \le 2 \times 10^51KN31 \le K \le \frac N3SS 是一个仅有 J,O,I\texttt J, \texttt O, \texttt I 组成的字符串。

子任务编号 分值 NN
1 11 21\le 21
2 1212 3000\le 3000
3 8787 无额外限制