import sys, math
from collections import deque

def solve():
    data = sys.stdin.buffer.read().split()
    if not data:
        return
    it = iter(data)
    n = int(next(it)); m = int(next(it))
    x = int(next(it)) - 1
    y = int(next(it)) - 1
    arr = [next(it).decode() for _ in range(n)]
    dirs = [(-1, 0), (1, 0), (0, 1), (0, -1)]
    dist_solo = [[-1]*m for _ in range(n)]    
    stk = []
    for i in range(n):
        for j in range(m):
            if arr[i][j] == '@':
                stk.append(m*i+j)
                dist_solo[i][j] = 0
    q = deque(stk)
    while q:
        for _ in range(len(q)):
            sta = q.popleft()
            i, j = sta // m, sta % m
            for di, dj in dirs:
                ni, nj = i + di, j + dj
                if 0<=ni<n and 0<=nj<m and arr[ni][nj]=='.' and dist_solo[ni][nj]==-1:
                    dist_solo[ni][nj] = dist_solo[i][j] + 1
                    q.append(m*ni+nj)


    dist = [[-1]*m for _ in range(n)]
    dist[x][y] = 0
    q = deque()
    q.append(m*x+y)
    ans = math.inf
    while q:
        sta = q.popleft()
        i, j = sta // m, sta % m
        if dist[i][j] >= ans:break        
        oi, oj = 2*x-i, 2*y-j
        for di, dj in dirs:
            ni, nj = i + di, j + dj
            noi, noj = oi - di, oj - dj
            if 0 <=ni<n and 0<=nj<m and 0<=noi<n and 0<=noj<m and \
                arr[ni][nj] != '#' and arr[noi][noj] != '#' and \
                dist[ni][nj] == -1:
                dist[ni][nj] = dist[i][j] + 1
                if arr[ni][nj] == '@' and arr[noi][noj] == '@':
                    ans = min(ans, dist[i][j]+1)
                elif arr[ni][nj] == '@':
                    ans = min(ans, dist[i][j]+1+dist_solo[noi][noj])
                elif arr[noi][noj] == '@':
                    ans = min(ans, dist[i][j]+1+dist_solo[ni][nj])
                else:
                    q.append(m*ni+nj)
    print(ans if ans != math.inf else -1)
    
if __name__ == '__main__':
    solve()

py没过的兄弟萌,看看是不是输入的问题,我试了两个小时各种优化都不行,最后发现修改下输入数据的接收方法就能卡时间过了,再优化下剪枝应该还能更快,别用input()sys.stdin.readline(),很有可能就是逐行输入卡TLE了