You've got an *n* × *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*.
The first line contains four space-separated integers *n*, *m*, *x* and *y* (1 ≤ *n*, *m*, *x*, *y* ≤ 1000; *x* ≤ *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 "#".
import gc
import heapq
import itertools
import math
import sqlite3
from collections import Counter, deque, defaultdict
from sys import stdout
import time
from math import factorial, log, gcd
import sys
from decimal import Decimal
import threading
from heapq import *
from fractions import Fraction


def S():
    return sys.stdin.readline().split()


def I():
    return [int(i) for i in sys.stdin.readline().split()]


def II():
    return int(sys.stdin.readline())


def IS():
    return sys.stdin.readline().replace('\n', '')


def main():
    n, m, x, y = I()
    matrix = [IS() for _ in range(n)]
    white = [0] * m
    for i in range(n):
        for j in range(m):
            white[j] += 1 if matrix[i][j] == '.' else 0
    white_pref = [0] * (m + 1)
    for i in range(m):
        white_pref[i + 1] = white_pref[i] + white[i]

    dp = [[float('inf')] * 2 for _ in range(m + 1)]
    dp[0][1] = dp[0][0] = 0
    for i in range(m):
        for d in range(x, y + 1):
            if i + 1 - d < 0:
                break
            dp[i + 1][0] = min(dp[i - d + 1][1] + n * d - white_pref[i + 1] + white_pref[i - d + 1], dp[i + 1][0])
            dp[i + 1][1] = min(dp[i - d + 1][0] + white_pref[i + 1] - white_pref[i - d + 1], dp[i + 1][1])
    print(min(dp[m]))


if __name__ == '__main__':
    # for _ in range(II()):
    #     main()
    main()