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])
    }

}