from collections import deque
def solution(maps):
n = len(maps)
m = len(maps[0])
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
queue = deque([(0, 0, 1)])
visited = set()
while queue:
x, y, count = queue.popleft()
if x == n - 1 and y == m - 1:
return count
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0 <= ny < m and maps[nx][ny] == 1 and (nx, ny) not in visited:
visited.add((nx, ny))
queue.append((nx, ny, count + 1))
return -1