#include <bits/stdc++.h>
#define abdelrahman001 ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define F first
#define S second
#define inFile(t) freopen((t),"r",stdin)
#define outFile(t) freopen((t),"w",stdout)
#define pb push_back
#define pf push_front
#define Pb pop_back
#define all(v) (v).begin(),(v).end()
#define allr(v) (v).rbegin(),(v).rend()
#define Pf pop_front
#define sz size
#define MP make_pair
#define Pc __builtin_popcount
#define pi 2*acos(0)
#define BiEdge(v,a,b,c) (v)[(a)].pb({b,c}),(v)[(b)].pb(({a,c}))
#define mod 998244353
#define point complex<ld>
#define X real()
#define Y imag()
#define pll pair<ll,ll>
#define pii pair<int,int>
#define cross(a,b)(conj(a)*(b)).imag()
#define dot(a,b) (conj(a)*(b)).real()
#define rectangle pair<coordinate,coordinate>
#define line tuple<ll,ll,ll>
#define EPS 1e-7
#define polygon vector<point>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
int const N = 1e3+5,M = 105;
using namespace std;
ll n,m,x,y,arr[N],memo[N][N];
char c;
ll solve(ll ind,ll p,ll h)
{
if(ind == n)
return 0;
ll &ans = memo[ind][h];
if(p)
ans = memo[ind][p];
if(~ans)
return ans;
ans = 0;
if(p)
{
if(p<x)
ans = min(ans,solve(ind+1,p+1,0)+arr[ind]);
else if(p<y)
ans = min(ans,min(solve(ind+1,p+1,0)+arr[ind],solve(ind+1,0,h+1)+(n-arr[ind])));
else
ans = min(ans,solve(ind+1,0,h+1)+(n-arr[ind]));
} else
{
if(h<x)
ans = min(ans,solve(ind+1,0,h+1)+(n-arr[ind]));
else if(h<y)
ans = min(ans,min(solve(ind+1,p+1,0)+arr[ind],solve(ind+1,0,h+1)+(n-arr[ind])));
else
ans = min(ans,solve(ind+1,p+1,0)+(arr[ind]));
}
return ans;
}
int main()
{
abdelrahman001
cin >> n >> m >> x >> y;
for(int i =0;i<n;i++)
for(int j = 0;j<m;j++)
cin >> c,arr[j]+=(c== '.');
cout << solve(0,0,0);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgYWJkZWxyYWhtYW4wMDEgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIGluRmlsZSh0KSBmcmVvcGVuKCh0KSwiciIsc3RkaW4pCiNkZWZpbmUgb3V0RmlsZSh0KSBmcmVvcGVuKCh0KSwidyIsc3Rkb3V0KQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBmIHB1c2hfZnJvbnQKI2RlZmluZSBQYiBwb3BfYmFjawojZGVmaW5lIGFsbCh2KSAodikuYmVnaW4oKSwodikuZW5kKCkKI2RlZmluZSBhbGxyKHYpICh2KS5yYmVnaW4oKSwodikucmVuZCgpCiNkZWZpbmUgUGYgcG9wX2Zyb250CiNkZWZpbmUgc3ogc2l6ZQojZGVmaW5lIE1QIG1ha2VfcGFpcgojZGVmaW5lIFBjIF9fYnVpbHRpbl9wb3Bjb3VudAojZGVmaW5lIHBpIDIqYWNvcygwKQojZGVmaW5lIEJpRWRnZSh2LGEsYixjKSAodilbKGEpXS5wYih7YixjfSksKHYpWyhiKV0ucGIoKHthLGN9KSkKI2RlZmluZSBtb2QgOTk4MjQ0MzUzCiNkZWZpbmUgcG9pbnQgY29tcGxleDxsZD4KI2RlZmluZSBYIHJlYWwoKQojZGVmaW5lIFkgaW1hZygpCiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBjcm9zcyhhLGIpKGNvbmooYSkqKGIpKS5pbWFnKCkKI2RlZmluZSBkb3QoYSxiKSAoY29uaihhKSooYikpLnJlYWwoKQojZGVmaW5lIHJlY3RhbmdsZSBwYWlyPGNvb3JkaW5hdGUsY29vcmRpbmF0ZT4KI2RlZmluZSBsaW5lIHR1cGxlPGxsLGxsLGxsPgojZGVmaW5lIEVQUyAxZS03CiNkZWZpbmUgcG9seWdvbiB2ZWN0b3I8cG9pbnQ+CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CmludCBjb25zdCBOID0gMWUzKzUsTSA9IDEwNTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbGwgbixtLHgseSxhcnJbTl0sbWVtb1tOXVtOXTsKY2hhciBjOwpsbCBzb2x2ZShsbCBpbmQsbGwgcCxsbCBoKQp7CiAgICBpZihpbmQgPT0gbikKICAgICAgICByZXR1cm4gMDsKICAgIGxsICZhbnMgPSBtZW1vW2luZF1baF07CiAgICBpZihwKQogICAgICAgIGFucyA9IG1lbW9baW5kXVtwXTsKICAgIGlmKH5hbnMpCiAgICAgICAgcmV0dXJuIGFuczsKICAgIGFucyA9IDA7CiAgICBpZihwKQogICAgewogICAgICAgIGlmKHA8eCkKICAgICAgICAgICAgYW5zID0gbWluKGFucyxzb2x2ZShpbmQrMSxwKzEsMCkrYXJyW2luZF0pOwogICAgICAgIGVsc2UgaWYocDx5KQogICAgICAgICAgICBhbnMgPSBtaW4oYW5zLG1pbihzb2x2ZShpbmQrMSxwKzEsMCkrYXJyW2luZF0sc29sdmUoaW5kKzEsMCxoKzEpKyhuLWFycltpbmRdKSkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYW5zID0gbWluKGFucyxzb2x2ZShpbmQrMSwwLGgrMSkrKG4tYXJyW2luZF0pKTsKICAgIH0gZWxzZQogICAgewogICAgICAgIGlmKGg8eCkKICAgICAgICAgICAgYW5zID0gbWluKGFucyxzb2x2ZShpbmQrMSwwLGgrMSkrKG4tYXJyW2luZF0pKTsKICAgICAgICBlbHNlIGlmKGg8eSkKICAgICAgICAgICAgYW5zID0gbWluKGFucyxtaW4oc29sdmUoaW5kKzEscCsxLDApK2FycltpbmRdLHNvbHZlKGluZCsxLDAsaCsxKSsobi1hcnJbaW5kXSkpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGFucyA9IG1pbihhbnMsc29sdmUoaW5kKzEscCsxLDApKyhhcnJbaW5kXSkpOwogICAgfQogICAgcmV0dXJuIGFuczsKfQppbnQgbWFpbigpCnsKICAgIGFiZGVscmFobWFuMDAxCiAgICBjaW4gPj4gbiA+PiBtID4+IHggPj4geTsKICAgIGZvcihpbnQgaSA9MDtpPG47aSsrKQogICAgICAgIGZvcihpbnQgaiA9IDA7ajxtO2orKykKICAgICAgICAgICAgY2luID4+IGMsYXJyW2pdKz0oYz09ICcuJyk7CiAgICBjb3V0IDw8IHNvbHZlKDAsMCwwKTsKICAgIHJldHVybiAwOwp9Cg==