#include <bits/stdc++.h>
using namespace std;
#define int long long
#define dd double
#define ld long double
#define ull unsigned long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define el "\n"
#define Arwa ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fix(x) cout << fixed << setprecision(x)
#define all(v) v.begin(),v.end()
#define dpp(v,val) memset(v,val,sizeof(v))
#define mod 1e9+7
#define oo 1e9
const int N = 1e5 + 5;
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } // log(n) __gcd(a,b)
//todo اى ويل بريبير ماى بيبرز تو بى ذا بيست ان زيس وورلد
int n,m,x,y;
vector<vector<char>>v;
vector<pair<int,int>> col;
int dp[1003][1003][3];
int solve(int i,int j,int s)
{
if(i==m) return 0;
int& ret=dp[i][j][s];
if(ret!=-1) return ret;
int w=1e9,b=1e9;
if(i==0)
{
w=solve(i+1,1,0)+col[i].first;
b=solve(i+1,1,1)+col[i].second;
}
else
{
if(s==0)
{
if(j<x) w=solve(i+1,j+1,0)+col[i].first;
else if(j>=x&&j<y) { b=solve(i+1,1,1)+col[i].second; w=solve(i+1,j+1,0)+col[i].first; }
else if(j>=y) b=solve(i+1,1,1)+col[i].second;
}
else
{
if(j<x) b=solve(i+1,j+1,1)+col[i].second;
else if(j>=x&&j<y) { b=solve(i+1,j+1,1)+col[i].second; w=solve(i+1,1,0)+col[i].first; }
else if(j>=y) w=solve(i+1,1,0)+col[i].first;
}
}
return ret = min(w,b);
}
void HereWeGoAgain()
{
cin>>n>>m>>x>>y;
v.resize(n);
for(int i=0;i<n;i++)
v[i].resize(m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>v[i][j];
for(int i=0;i<m;i++)
{
int w=0,b=0;
for(int j=0;j<n;j++)
{
if(v[j][i]=='#') b++;
else w++;
}
col.push_back({w,b});
}
dpp(dp,-1);
//for(int i=0;i<col.size();i++) cout<<col[i].first<<' '<<col[i].second<<el;
cout<<solve(0,0,0);
}
int32_t main()
{
Arwa
int t=1;
//cin>>t;
for(int i=1;i<=t;i++)
{
HereWeGoAgain();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGRkIGRvdWJsZQojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHllcyBjb3V0IDw8ICJZRVNcbiIKI2RlZmluZSBubyBjb3V0IDw8ICJOT1xuIgojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBBcndhIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBmaXgoeCkgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oeCkKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBkcHAodix2YWwpIG1lbXNldCh2LHZhbCxzaXplb2YodikpCiNkZWZpbmUgbW9kIDFlOSs3CiNkZWZpbmUgb28gMWU5CmNvbnN0IGludCBOID0gMWU1ICsgNTsKaW50IGdjZChpbnQgYSwgaW50IGIpIHsgcmV0dXJuIGIgPT0gMCA/IGEgOiBnY2QoYiwgYSAlIGIpOyB9IC8vIGxvZyhuKSBfX2djZChhLGIpCi8vdG9kbyDYp9mJINmI2YrZhCDYqNix2YrYqNmK2LEg2YXYp9mJINio2YrYqNix2LIg2KrZiCDYqNmJINiw2Kcg2KjZitiz2Kog2KfZhiDYstmK2LMg2YjZiNix2YTYrwppbnQgbixtLHgseTsKdmVjdG9yPHZlY3RvcjxjaGFyPj52Owp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gY29sOwppbnQgZHBbMTAwM11bMTAwM11bM107CmludCBzb2x2ZShpbnQgaSxpbnQgaixpbnQgcykKewogICAgaWYoaT09bSkgcmV0dXJuIDA7CiAgICBpbnQmIHJldD1kcFtpXVtqXVtzXTsKICAgIGlmKHJldCE9LTEpIHJldHVybiByZXQ7CiAgICBpbnQgdz0xZTksYj0xZTk7CiAgICBpZihpPT0wKQogICAgewogICAgIHc9c29sdmUoaSsxLDEsMCkrY29sW2ldLmZpcnN0OwogICAgIGI9c29sdmUoaSsxLDEsMSkrY29sW2ldLnNlY29uZDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgaWYocz09MCkKICAgICAgewogICAgICAgIGlmKGo8eCkgdz1zb2x2ZShpKzEsaisxLDApK2NvbFtpXS5maXJzdDsKICAgICAgICBlbHNlIGlmKGo+PXgmJmo8eSkgeyBiPXNvbHZlKGkrMSwxLDEpK2NvbFtpXS5zZWNvbmQ7IHc9c29sdmUoaSsxLGorMSwwKStjb2xbaV0uZmlyc3Q7IH0KICAgICAgICBlbHNlIGlmKGo+PXkpIGI9c29sdmUoaSsxLDEsMSkrY29sW2ldLnNlY29uZDsKICAgICAgICAKICAgICAgfQogICAgICBlbHNlIAogICAgICB7CiAgICAgICAgaWYoajx4KSBiPXNvbHZlKGkrMSxqKzEsMSkrY29sW2ldLnNlY29uZDsKICAgICAgICBlbHNlIGlmKGo+PXgmJmo8eSkgeyAgYj1zb2x2ZShpKzEsaisxLDEpK2NvbFtpXS5zZWNvbmQ7IHc9c29sdmUoaSsxLDEsMCkrY29sW2ldLmZpcnN0OyB9CiAgICAgICAgZWxzZSBpZihqPj15KSB3PXNvbHZlKGkrMSwxLDApK2NvbFtpXS5maXJzdDsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHJldCA9IG1pbih3LGIpOwp9CnZvaWQgSGVyZVdlR29BZ2FpbigpCnsKICAgY2luPj5uPj5tPj54Pj55OwogICB2LnJlc2l6ZShuKTsKICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgdltpXS5yZXNpemUobSk7CiAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICBmb3IoaW50IGo9MDtqPG07aisrKQogICAgY2luPj52W2ldW2pdOwogICBmb3IoaW50IGk9MDtpPG07aSsrKQogICB7IAogICAgaW50IHc9MCxiPTA7CiAgICBmb3IoaW50IGo9MDtqPG47aisrKQogICAgewogICAgICAgIGlmKHZbal1baV09PScjJykgYisrOwogICAgICAgIGVsc2UgdysrOwogICAgfQogICAgY29sLnB1c2hfYmFjayh7dyxifSk7CiAgIH0KICAgZHBwKGRwLC0xKTsKICAgLy9mb3IoaW50IGk9MDtpPGNvbC5zaXplKCk7aSsrKSBjb3V0PDxjb2xbaV0uZmlyc3Q8PCcgJzw8Y29sW2ldLnNlY29uZDw8ZWw7CiAgIGNvdXQ8PHNvbHZlKDAsMCwwKTsKfQppbnQzMl90IG1haW4oKSAKewogICAgQXJ3YQogICAgaW50IHQ9MTsKICAgIC8vY2luPj50OwogICAgZm9yKGludCBpPTE7aTw9dDtpKyspCiAgICB7CiAgICBIZXJlV2VHb0FnYWluKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==