#SC2024SD3T9. 二进制串的修补

二进制串的修补

题目描述

我们假设一个长度为 nn0,10,1sskk- 完美的,需要满足以下条件:

  • knk|n
  • s1=s2==sks_1 = s_2 = \cdots = s_k
  • sisi+k(1ink)s_i \ne s_{i+k}(1\le i\le n-k)

(假设字符串下标从 11 开始)

现在给你一个 0101 串,及其长度 nn,还有 kk 的值。你可以选择一个前缀,将其翻转,然后放到串的最后。这个操作需要进行 刚好一次

例如 110110110110,将长度为 33 的前缀翻转,并放到串的最后,可变成 110011110011

你希望通过这次操作将字符串翻转成 kk- 完美的。比如:若 k=2k=2,刚刚的翻转方式就是一种满足要求的方案。

若翻转方式存在,则输出被翻转前缀长度的最小值。若不存在,输出 1-1

需要注意的是,若一开始这个串就是 kk- 完美的,你也需要翻转一次。

输入格式

第一行为 n,k(1n105)n,k(1\le n\le 10^5),且保证 kknn 的因数。

第二行一个长度为 nn0101 串。

输出格式

输出被翻转前缀长度的最小值。若不存在,输出 1-1

12 2
110001100110
3
8 4
11111111
1
4 2
1110
-1