from collections import deque H, W = map(int, input().split()) S = [input() for _ in range(H)] def func(h, w): if h == 0 or h == H-1 or w == 0 or w == W-1: return False for dh in range(-1, 2): nh = h+dh for dw in range(-1, 2): nw = w+dw if S[nh][nw] == "#": return False return True def bfs(a, b): visited = [[False]*W for _ in range(H)] visited[1][1] = True que = deque() que.append((1, 1)) while que: h, w = que.popleft() for dh in range(-1, 2): nh = h+dh for dw in range(-1, 2): nw = w+dw if max(abs(a-nh), abs(b-nw)) <= 1: continue if F[nh][nw] and not visited[nh][nw]: visited[nh][nw] = True que.append((nh, nw)) return visited[H-2][W-2] F = [[func(h, w) for w in range(W)] for h in range(H)] if not bfs(-1, -1): print(0) exit() flag = False for i in range(H): for j in range(W): if max(i, j) <= 2 or H-3 <= i and W-3 <= j: continue flag |= not bfs(i, j) print(1 if flag else 2)