#include<bits/stdc++.h>
using namespace std;

#define ll long long 
#define pll pair<ll,ll> 
#define ppll pair<ll, pll> 

const ll N=1e3+5;
ll V[N][N];

ll ans=-1;
char s[N][N];
ll n, m;
bool check (ll x, ll y){
	if(x>=0 && x<n && y>=0 && y< m )
		return 1;
	return 0;
}
void bfs(ll x,ll y, ll a, ll b){
	priority_queue<ppll, vector<ppll> , greater<ppll> > q;
	q.push({0,{x,y}});
	while(!q.empty()){
		ll w=q.top().first;
		x=q.top().second.first;
		y=q.top().second.second;
		q.pop();
		if(x==a && y==b){
			ans=w;
			return ;
		}

		if(V[x][y])
			continue;
		V[x][y]=1;

		for(ll i=-2;i<=2;i++){
			for(ll j=-2;j<=2;j++){
				if(!i && !j)
					continue;
				ll az=abs(i)+abs(j);
				ll u=x+i, v=y+j;
				if(check(u,v)  && s[u][v]=='.' )
					q.push({w+(az>1),{u,v}});
			}
		}
	}
}

int main(){

	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin>>n>>m;
	ll x,y,a, b;
	cin>>x>>y>>a>>b;
	x--,y--,a--,b--;
	for(ll i=0;i<n;i++)
		for(ll j=0;j<m;j++)
			cin>>s[i][j];


	bfs(x,y, a, b);

	cout<<ans<<endl;
}
