✅ 정답 공개
from collections import deque
n, m = map(int, input().split())
grid = [input() for _ in range(n)]
start = None
for r in range(n):
for c in range(m):
if grid[r][c] == 'S':
start = (r, c)
visited = [[False]*m for _ in range(n)]
q = deque([(*start, 0)])
visited[start[0]][start[1]] = True
result = -1
while q:
r, c, d = q.popleft()
if grid[r][c] == 'E':
result = d
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] != '#':
visited[nr][nc] = True
q.append((nr, nc, d+1))
if result == -1:
print('NO')
else:
print('YES')
print(result)