#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 2e9;
const ll LINF = 1e18;
template<typename T>
bool minimize(T& a, const T& b) {
if (b < a) {a = b; return true;}
return false;
}
int dx[4] = {0, 0, -1, 1};
int dy[4] = {-1, 1, 0, 0};
const int N = 2e3 + 5;
int n, m;
int sx, sy;
int a, b;
string s[N];
bool ok(int x, int y) {
return (0 <= x && x < n && 0 <= y && y < m && s[x][y] == '.');
}
// sy + cnt_right - cnt_left = y
// (sy - y) + cnt_right = cnt_left
// const + cnt_right = cnt_left
// => Chỉ cần tối ưu cnt_right hoặc cnt_left thì thằng còn lại cũng sẽ tối ưu theo
int dist[N][N]; // dist[x][y] = Số bước đi sang phải (cnt_right) ít nhất
// để từ ô (sx, sy) đến được ô (x, y)
void bfs(int sx, int sy) {
for (int x = 0; x < n; x++) {
for (int y = 0; y < m; y++) dist[x][y] = INF;
}
deque<ii> dq;
dist[sx][sy] = 0;
dq.push_back({sx, sy});
while (!dq.empty()) {
ii front = dq.front(); dq.pop_front();
int x = front.first, y = front.second;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i], ny = y + dy[i];
int w = (i == 1) ? 1 : 0;
if (!ok(nx, ny)) continue;
if (minimize(dist[nx][ny], dist[x][y] + w)) {
if (w == 0) {
dq.push_front({nx, ny});
}
else {
dq.push_back({nx, ny});
}
}
}
}
}
int cnt[N][N];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
cin >> sx >> sy;
--sx, --sy;
cin >> a >> b;
for (int x = 0; x < n; x++) cin >> s[x];
bfs(sx, sy);
int ans = 0;
for (int x = 0; x < n; x++) {
for (int y = 0; y < m; y++) {
if (dist[x][y] == INF) continue;
int cnt_right = dist[x][y];
int cnt_left = (sy - y) + cnt_right;
ans += (cnt_left <= a && cnt_right <= b);
}
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDJlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KYm9vbCBtaW5pbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYiA8IGEpIHthID0gYjsgcmV0dXJuIHRydWU7fQoJcmV0dXJuIGZhbHNlOwp9CgppbnQgZHhbNF0gPSB7MCwgMCwgLTEsIDF9OyAKaW50IGR5WzRdID0gey0xLCAxLCAwLCAwfTsgIAoKY29uc3QgaW50IE4gPSAyZTMgKyA1OyAKCmludCBuLCBtOyAKaW50IHN4LCBzeTsgCmludCBhLCBiOyAgCnN0cmluZyBzW05dOyAgCgpib29sIG9rKGludCB4LCBpbnQgeSkgewoJcmV0dXJuICgwIDw9IHggJiYgeCA8IG4gJiYgMCA8PSB5ICYmIHkgPCBtICYmIHNbeF1beV0gPT0gJy4nKTsgCn0KCi8vIHN5ICsgY250X3JpZ2h0IC0gY250X2xlZnQgPSB5Ci8vIChzeSAtIHkpICsgY250X3JpZ2h0ID0gY250X2xlZnQgCi8vICAgY29uc3QgICsgY250X3JpZ2h0ID0gY250X2xlZnQKLy8gPT4gQ2jhu4kgY+G6p24gdOG7kWkgxrB1IGNudF9yaWdodCBob+G6t2MgY250X2xlZnQgdGjDrCB0aOG6sW5nIGPDsm4gbOG6oWkgY8Wpbmcgc+G6vSB04buRaSDGsHUgdGhlbwoKaW50IGRpc3RbTl1bTl07IC8vIGRpc3RbeF1beV0gPSBT4buRIGLGsOG7m2MgxJFpIHNhbmcgcGjhuqNpIChjbnRfcmlnaHQpIMOtdCBuaOG6pXQKCQkJCS8vICAgICAgICAgICAgICDEkeG7gyB04burIMO0IChzeCwgc3kpIMSR4bq/biDEkcaw4bujYyDDtCAoeCwgeSkKCnZvaWQgYmZzKGludCBzeCwgaW50IHN5KSB7Cglmb3IgKGludCB4ID0gMDsgeCA8IG47IHgrKykgewoJCWZvciAoaW50IHkgPSAwOyB5IDwgbTsgeSsrKSBkaXN0W3hdW3ldID0gSU5GOyAgCgl9CgoJZGVxdWU8aWk+IGRxOyAgCglkaXN0W3N4XVtzeV0gPSAwOyAgIAoJZHEucHVzaF9iYWNrKHtzeCwgc3l9KTsgIAoKCXdoaWxlICghZHEuZW1wdHkoKSkgewoJCWlpIGZyb250ID0gZHEuZnJvbnQoKTsgZHEucG9wX2Zyb250KCk7ICAKCQlpbnQgeCA9IGZyb250LmZpcnN0LCB5ID0gZnJvbnQuc2Vjb25kOyAgCgoJCWZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CgkJCWludCBueCA9IHggKyBkeFtpXSwgbnkgPSB5ICsgZHlbaV07IAoJCQlpbnQgdyA9IChpID09IDEpID8gMSA6IDA7ICAgCgkJCQoJCQlpZiAoIW9rKG54LCBueSkpIGNvbnRpbnVlOyAKCgkJCWlmIChtaW5pbWl6ZShkaXN0W254XVtueV0sIGRpc3RbeF1beV0gKyB3KSkgewoJCQkJaWYgKHcgPT0gMCkgewoJCQkJCWRxLnB1c2hfZnJvbnQoe254LCBueX0pOyAgCgkJCQl9CgkJCQllbHNlIHsKCQkJCQlkcS5wdXNoX2JhY2soe254LCBueX0pOyAKCQkJCX0KCQkJfQoJCX0KCX0KfQoKaW50IGNudFtOXVtOXTsgIAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCgljaW4gPj4gc3ggPj4gc3k7ICAKCS0tc3gsIC0tc3k7ICAKCWNpbiA+PiBhID4+IGI7ICAKCglmb3IgKGludCB4ID0gMDsgeCA8IG47IHgrKykgY2luID4+IHNbeF07IAoKCWJmcyhzeCwgc3kpOyAgCgkJCglpbnQgYW5zID0gMDsgIAoJZm9yIChpbnQgeCA9IDA7IHggPCBuOyB4KyspIHsKCQlmb3IgKGludCB5ID0gMDsgeSA8IG07IHkrKykgewoJCQlpZiAoZGlzdFt4XVt5XSA9PSBJTkYpIGNvbnRpbnVlOyAKCQkJaW50IGNudF9yaWdodCA9IGRpc3RbeF1beV07ICAgCgkJCWludCBjbnRfbGVmdCA9IChzeSAtIHkpICsgY250X3JpZ2h0OyAgCgkJCWFucyArPSAoY250X2xlZnQgPD0gYSAmJiBjbnRfcmlnaHQgPD0gYik7ICAKCQl9Cgl9CgoJY291dCA8PCBhbnMgPDwgJ1xuJzsgCn0=