#include<bits/stdc++.h>
using namespace std;
int n,m,r,c,x,y;
const int maxn=2000+10;
int g[maxn][maxn];
bool vis[maxn][maxn];
int ans;
int idx[6]={0,-1,1,0,0};
int idy[6]={0,0,0,-1,1};
struct node
{
int x,y,l,r;
};
void bfs()
{
int u,v;
deque<node> q;
q.push_front({r,c,0,0});
vis[r][c]=true;
while (q.size())
{
node nd=q.front();
q.pop_front();
ans++;
for (int i=1;i<=4;i++)
{
u = nd.x+idx[i];
v = nd.y+idy[i];
if (u<1 || u>n || v<1 || v>m || vis[u][v] || g[u][v]) continue;
if (i == 1 || i == 2) q.push_front({u,v,nd.l,nd.r});
if (i == 3 && nd.l<x) q.push_back({u,v,nd.l+1,nd.r});
if (i == 4 && nd.r<y) q.push_back({u,v,nd.l,nd.r+1});
vis[u][v]=true;
}
}
}
int main()
{
cin >> n >> m;
cin >> r >> c;
cin >> x >> y;
char c;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
cin >> c;
if (c == '*') g[i][j]=1;
}
}
bfs();
cout << ans << endl;
return 0;
}