#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int x1,y1,x2,y2;
int num=0;
char map[14][14]={0};
int m[14][14]={0};
queue <int> x;
queue <int> y;
void input();
void bfs();
void output();
int main()
{
input();
bfs();
return 0;
}
void input()
{
int i,j;
cin>>x1>>y1>>x2>>y2;
x.push(x1);
y.push(y1);
for(i=1;i <= 12 ;i++)
{
for(j=1;j <= 12;j++)
{
cin>>map[i][j];
}
}
}
void bfs()
{
int i,j;
int flag=1;
while(flag == 1)
{
if(m[x2][y2] != 0)
{
cout<<m[x2][y2]<<endl;
break;
}
x1=x.front();
x.pop();
y1=y.front();
y.pop();
map[x1][y1]='X';
if(map[x1+1][y1] == '.')
{
x.push(x1+1);
y.push(y1);
m[x1+1][y1]=m[x1][y1]+1;
}
if(map[x1-1][y1] == '.')
{
x.push(x1-1);
y.push(y1);
m[x1-1][y1]=m[x1][y1]+1;
}
if(map[x1][y1+1] == '.')
{
x.push(x1);
y.push(y1+1);
m[x1][y1+1]=m[x1][y1]+1;
}
if(map[x1][y1-1] == '.')
{
x.push(x1);
y.push(y1-1);
m[x1][y1-1]=m[x1][y1]+1;
}
}
}
#include<iostream>
#include<queue>
using namespace std;
int x1,y1,x2,y2;
int num=0;
char map[14][14]={0};
int m[14][14]={0};
queue <int> x;
queue <int> y;
void input();
void bfs();
void output();
int main()
{
input();
bfs();
return 0;
}
void input()
{
int i,j;
cin>>x1>>y1>>x2>>y2;
x.push(x1);
y.push(y1);
for(i=1;i <= 12 ;i++)
{
for(j=1;j <= 12;j++)
{
cin>>map[i][j];
}
}
}
void bfs()
{
int i,j;
int flag=1;
while(flag == 1)
{
if(m[x2][y2] != 0)
{
cout<<m[x2][y2]<<endl;
break;
}
x1=x.front();
x.pop();
y1=y.front();
y.pop();
map[x1][y1]='X';
if(map[x1+1][y1] == '.')
{
x.push(x1+1);
y.push(y1);
m[x1+1][y1]=m[x1][y1]+1;
}
if(map[x1-1][y1] == '.')
{
x.push(x1-1);
y.push(y1);
m[x1-1][y1]=m[x1][y1]+1;
}
if(map[x1][y1+1] == '.')
{
x.push(x1);
y.push(y1+1);
m[x1][y1+1]=m[x1][y1]+1;
}
if(map[x1][y1-1] == '.')
{
x.push(x1);
y.push(y1-1);
m[x1][y1-1]=m[x1][y1]+1;
}
}
}