#include<bits/stdc++.h>
using namespace std;
int n,m,xs,ys,l1,r1;
char a[2005][2005];
int vis[2005][2005];
int dir[5][3]={{0,1},{0,-1},{1,0},{-1,0}};
int dirl[5]={0,1,0,0};
int dirr[5]={1,0,0,0};
struct node{
int x,y,l,r;
};
node s[2005][2005];
queue<node> q;
int cnt=1;
void bfs(){
q.push(node{xs,ys,0,0});
vis[xs][ys]=1;
s[xs][ys].l=0;
s[xs][ys].r=0;
while(!q.empty()){
node t=q.front();
for(int i=0;i<4;i++){
int xx=t.x+dir[i][0];
int yy=t.y+dir[i][1];
int ll=t.l+dirl[i];
int rr=t.r+dirr[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='*'&&ll<=l1&&rr<=r1){
if(vis[xx][yy]==0){
vis[xx][yy]=1;
q.push(node{xx,yy,ll,rr});
cnt++;
s[xx][yy].l=ll;
s[xx][yy].r=rr;
}
else if(vis[xx][yy]==1&&ll<s[xx][yy].l&&rr<s[xx][yy].r){
q.push(node{xx,yy,ll,rr});
s[xx][yy].l=ll;
s[xx][yy].r=rr;
}
}
}
q.pop();
}
}
int main(){
cin>>n>>m>>xs>>ys>>l1>>r1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
bfs();
cout<<cnt;
}