길이가 N이고 0과 1로만 이루어진 문자열 S와 정수 M이 주어진다. M은 N의 약수이다.
S에 적용할 수 있는 연산은 다음 세 가지이다.
- 문자 하나를 뒤집는다. 0은 1이 되고, 1은 0이 된다.
- 양의 정수 k를 골라 처음 k×M개의 문자를 뒤집는다. 이때 k×M≤N이어야 한다.
- 양의 정수 k를 골라 마지막 k×M개의 문자를 뒤집는다. 이때 k×M≤N이어야 한다.
처음 N개를 뒤집는 연산과 마지막 N개를 뒤집는 연산은 결과가 같으므로 한 가지로 센다.
예를 들어 S가 "110100001001"이고 M=4이면 S에 적용할 수 있는 연산은 모두 17가지이다. 두 번째 문자를 뒤집으면 "100100001001"이 되고, 처음 2×M개를 뒤집으면 "001011111001"이 되며, 마지막 M개를 뒤집으면 "110100000110"이 된다.
S의 모든 문자를 1로 만들기 위해 적용해야 하는 연산의 최소 횟수를 구하는 프로그램을 작성하시오.