✅ 정답 공개
from collections import deque
n, m = map(int, input().split())
grid = [list(map(int, input().split())) for _ in range(n)]
visited = [[False]*m for _ in range(n)]
q = deque([(0, 0, 0)])
visited[0][0] = True
result = -1
while q:
r, c, dist = q.popleft()
if r == n-1 and c == m-1:
result = dist
break
for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:
nr, nc = r+dr, c+dc
if 0 <= nr < n and 0 <= nc < m and not visited[nr][nc] and grid[nr][nc] == 0:
visited[nr][nc] = True
q.append((nr, nc, dist+1))
print(result)