#P15023. [UOI 2020 II Stage] 又是邻居
[UOI 2020 II Stage] 又是邻居
题目描述
邻居们又在找谢别克的麻烦,并给他想出了新的挑战。这次他们有一段长度为 的线段。邻居们把谢别克放在了坐标 处,并要求他跳到坐标为 的点。
但谢别克有个问题。他只能向前跳跃长度 、 或 。然而邻居们决定进一步限制他。他们给了他一个长度为 、由小写拉丁字母组成的字符串 。谢别克可以向前跳跃长度 (),当且仅当在字符串 中存在一个子串,满足以下条件:
- 该子串的长度为 。
- 子串中的所有字母都相同。
- 在子串的左侧,要么是一个不同于子串字母的字符,要么不存在任何字符(即子串位于字符串边缘)。
- 在子串的右侧,要么是一个不同于子串字母的字符,要么不存在任何字符。
如果字符串 可以通过从 的开头删除若干个(可以是零个或全部)字符,并从结尾删除若干个(可以是零个或全部)字符得到,则称 是 的子串。
例如,假设字符串为 aabaaabbcbbbebbab 且 。那么该字符串中有多个子串符合限制条件:(aa)baaa(bb)cbbbe(bb)ab。因此在这种情况下,可以跳跃长度为 。此外,该字符串也允许跳跃长度为 和 。而字符串 ebbbcedddd 只允许跳跃长度 和 。
谢别克需要仅使用允许的跳跃长度,从点 跳到坐标为 的点,并且使用最少的跳跃次数。假设你就是谢别克,请计算这个最少的跳跃次数。
请注意,谢别克需要恰好跳到坐标为 的点,而不是 或 。
输入格式
第一行包含一个整数 () —— 谢别克需要跳跃的线段长度。
第二行包含一个整数 () —— 邻居给出的字符串长度。
第三行包含一个长度为 的字符串 ,由小写字母组成 —— 邻居给出的字符串。
输出格式
输出一个整数 —— 谢别克为了从坐标为 的点跳到坐标为 的点所需的最少跳跃次数。如果他无法完成,则输出 。
4
5
acccz
2
11
18
bbbccccdddbcggggga
5
10
5
zzzzz
-1
提示
样例说明
- 谢别克可以跳跃 和 。一种可能的跳跃方案是 。
- 谢别克可以跳跃 和 。一种可能的跳跃方案是 。
- 谢别克完全无法跳跃,因为唯一由相同字母组成的子串长度为 。
翻译由 DeepSeek V3 完成