3864.Barcode

Time Limit: 1s Memory Limit: 256MB

You've got an n \times m pixel picture. Each pixel can be white or black. Your task is to change the colors of as few pixels as possible to obtain a barcode picture.

A picture is a barcode if the following conditions are fulfilled:
All pixels in each column are of the same color. The width of each monochrome vertical line is at least x and at most y pixels. In other words, if we group all neighbouring columns of the pixels with equal color, the size of each group can not be less than x or greater than y.

Input Format(From the terminal/stdin)

The first line contains four space-separated integers n, m, x and y (1 \le n,m,x,y \le 1000;x \le y).

Then follow n lines, describing the original image. Each of these lines contains exactly m characters. Character "." represents a white pixel and "#" represents a black pixel. The picture description doesn't have any other characters besides "." and "#".

Output Format(To the terminal/stdout)

In the first line print the minimum number of pixels to repaint. It is guaranteed that the answer exists.

Sample Input 1

Copy
6 5 1 2
##.#.
.###.
###..
#...#
.##.#
###..
 · · · \n
     \n
     \n
     \n
     \n
     \n
     \n

Sample Output 1

Copy
11
  \n

Sample Input 2

Copy
2 5 1 1
#####
.....
 · · · \n
     \n
     \n

Sample Output 2

Copy
5
 \n

Hints

In the first test sample the picture after changing some colors can looks as follows:

.##..
.##..
.##..
.##..
.##..
.##..

In the second test sample the picture after changing some colors can looks as follows:

.#.#.
.#.#.

Submit

请先 登录

© 2025 FAQs