#include<bits/stdc++.h>
using namespace std;
const int N=101;
struct node{int x,y,step;};
char ch;
int n,m,mx,my,ans=0;
int dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1};
int mp[N][N];
bitset<N>vis[N];
queue<node>Q;
void bfs(int x,int y){
Q.push({x,y,0});
vis[x][y]=1;
while(!Q.empty()){
node f=Q.front();
Q.pop();
ans=f.step;
for(int i=0; i<8; i++){
int nx=f.x+dx[i],ny=f.y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!mp[nx][ny]&&!vis[nx][ny]){
vis[nx][ny]=1;
Q.push({nx,ny,f.step+1});
}
}
}
}
int main(){
cin>>n>>m>>mx>>my;
for(int i=1; i<=m; i++){
for(int j=1; j<=n; j++){
cin>>ch;
if(ch=='.')mp[i][j]=0;
else mp[i][j]=1;
}
}
bfs(mx,my);
cout<<ans;
return 0;
}