#include <bits/stdc++.h>
using namespace std;
int ll, rr, n, m, ans;
char cc[2009][2009];
bool v[2009][2009];
struct node {
  int x, y, l, r;
};
bool isok(int x, int y) {
  if (x < 1 || x > n || y < 1 || y > m || cc[x][y] == '*' || v[x][y])
    return false;
  return true;
}
void bfs(int x, int y, int l, int r) {
  deque<node> q;
  q.push_front({x, y, l, r});
  while (!q.empty()) {
    node n = q.front();
    q.pop_front();
    if (v[n.x][n.y]) continue;
    v[n.x][n.y] = true;
    ans++;
    if (isok(n.x + 1, n.y)) q.push_front({n.x + 1, n.y, n.l, n.r});
    if (isok(n.x - 1, n.y)) q.push_front({n.x - 1, n.y, n.l, n.r});
    if (isok(n.x, n.y + 1) && n.r > 0)
      q.push_back({n.x, n.y + 1, n.l, n.r - 1});
    if (isok(n.x, n.y - 1) && n.l > 0)
      q.push_back({n.x, n.y - 1, n.l - 1, n.r});
  }
}
int main() {
  int xx, yy;
  cin >> n >> m >> xx >> yy >> ll >> rr;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      scanf(" %c", &cc[i][j]);
    }
  }
  bfs(xx, yy, ll, rr);
  cout << ans << endl;
}
