import sys from collections import deque readline = sys.stdin.readline input_value = readline().split() H = int(input_value[0]) W = int(input_value[1]) grid = [None] * H for h in range(H): fragment_grid = readline().split() grid.append(fragment_grid) dist = [[-1] * W for _ in range(H)] queue = deque() dist[0][0] = 0 queue.append((0,0)) dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] ans = H + W while queue: y, x = queue.popleft() if y == H - 1 and x == W - 1: ans = dist[y][x] break for i in range(4): ny = y + dy[i] nx = x + dx[i] if 0 <= ny < H and 0 <= nx < W: if grid[ny][nx] == '.' and dist[ny][nx] == -1: dist[ny][nx] = dist[y][x] + 1 queue.append((ny, nx)) print(ans)