#P16425. pm12728翻转比特

pm12728翻转比特

题目背景

Goose Tattarrattat 有一个仅由字符 01 组成的字符串。她希望通过若干次翻转操作,将这个字符串变成具有指定周期的形式。

题目描述

给定一个长度为 NN 的二进制字符串 BB,以及一个正整数 MM

如果字符串 BB 的长度为 NMN-M 的前缀与长度为 NMN-M 的后缀完全相同,则称 BB 为一个 旋转序列

等价地,对于所有满足

1iNM1 \le i \le N-M

的位置,都有

Bi=Bi+M.B_i=B_{i+M}.

也就是说,字符串中相距 MM 的两个对应位置必须相同。

你可以进行任意次操作。每次操作可以选择以下两种方式之一:

  1. 选择字符串中的任意一个位置,将该位置的比特翻转:0 变为 11 变为 0

  2. 选择一个正整数 kk,满足

    kMN,kM \le N,

    然后将字符串的前 kMkM 个比特全部翻转。

请计算将初始字符串 BB 变成某个旋转序列所需的最少操作次数。

输入格式

第一行包含两个整数 NNMM,分别表示二进制字符串的长度和目标周期。

第二行包含一个长度为 NN 的二进制字符串 BB

输出格式

输出一个整数,表示将 BB 变成某个旋转序列所需的最少操作次数。

数据范围

  • 1N3001 \le N \le 300
  • 1MN1 \le M \le N
  • 字符串 BB 的长度恰好为 NN
  • 字符串 BB 只包含字符 01

样例 1

输入

8 1
00111000

输出

2

解释

先选择 k=2k=2,翻转前 2M=22M=2 个比特,字符串变为 11111000

再选择 k=5k=5,翻转前 5M=55M=5 个比特,字符串变为 00000000

最终字符串满足周期 M=1M=1,共进行 22 次操作。

样例 2

输入

12 3
101100001101

输出

2

样例 3

输入

8 4
11111111

输出

0

样例 4

输入

10 8
1101001000

输出

1

样例 5

输入

14 5
11011100101110

输出

4