package main
import (
"bufio"
"fmt"
"os"
)
var dx = []int{0,1,0,-1}
var dy = []int{1,0,-1,0}
func main() {
in := bufio.NewReader(os.Stdin)
var n,m int
var sx,sy,ex,ey int
fmt.Fscan(in, &n,&m,&sx,&sy,&ex,&ey)
dist := make([][]int,n+1)
for i := range dist {
dist[i] = make([]int, m+1)
for j := range dist[i] {
dist[i][j] = -1
}
}
var data []string
for i:=0;i<n;i++{
var tmp string
fmt.Fscan(in, &tmp)
data = append(data, tmp)
}
q := [][]int{{sx,sy}}
dist[sx][sy] = 0
for len(q) != 0 {
cx,cy := q[0][0],q[0][1]
q = q[1:]
if data[cx-1][cy-1] == '*' {
continue
}
for k := 0;k<4;k++{
nx := cx + dx[k]
ny := cy + dy[k]
if nx >= 1 && nx <= n && ny >= 1 && ny <= m && dist[nx][ny] == -1 && data[nx-1][ny-1] != '*'{
dist[nx][ny] = dist[cx][cy] + 1
q = append(q,[]int{nx,ny})
}
}
}
if dist[ex][ey] == -1 {
fmt.Println(-1)
} else {
fmt.Println(dist[ex][ey])
}
}