import sys from collections import deque input = sys.stdin.readline def solve(): H, W = map(int, input().split()) grid = [input().strip() for _ in range(H)] def passable(r, c): return 0 <= r < H and 0 <= c < W and grid[r][c] != '#' def orig(r,c): return r*W+c def rh(i,j): return H*W + i*W + j def ch(i,j): return H*W + (H-1)*W + i*(W-1) + j total = H*W + (H-1)*W + H*(W-1) dist = [-1]*total start = orig(0,0); goal = orig(H-1,W-1) dist[start] = 0; q = deque([start]) while q: u = q.popleft(); d = dist[u] if u == goal: print(d); return if u < H*W: r, c = divmod(u, W) for dr,dc in [(-1,0),(1,0),(0,-1),(0,1)]: nr,nc = r+dr, c+dc if passable(nr,nc): v = orig(nr,nc) if dist[v]==-1: dist[v]=d+1; q.append(v) if passable(r,c): for v in ([rh(r-1,c)] if r>0 else []) + ([rh(r,c)] if r0 else []) + ([ch(r,c)] if c0 else []) + ([rh(i,j+1)] if j0 else []) + ([ch(i+1,j)] if i