INF = 1<<60 H, W = map(int, input().split()) S = [input() for _ in range(H)] dp = [[False]*W for _ in range(H)] dpR = [[False]*W for _ in range(H)] dp[0][0] = True dpR[H-1][W-1] = True maxH, maxW = -INF, -INF minH, minW = INF, INF for i in range(H): for j in range(W): if dp[i][j]: maxH = max(maxH, i) maxW = max(maxW, j) if i+1 < H and S[i+1][j] != "#": dp[i+1][j] = True if j+1 < W and S[i][j+1] != "#": dp[i][j+1] = True for i in reversed(range(H)): for j in reversed(range(W)): if dpR[i][j]: minH = min(minH, i) minW = min(minW, j) if 1 <= i and S[i-1][j] != "#": dpR[i-1][j] = True if 1 <= j and S[i][j-1] != "#": dpR[i][j-1] = True if dp[-1][-1]: print(H+W-2) elif minH <= maxH+1 or minW <= maxW+1: print(H+W-1) else: print(H+W)