code: def find_min_path(board, start, end):
      n = len(board)
      m = len(board[0])
  
      # create a visited array
      visited = [[False for el in range(m)] for row in range(n)]
  
      queue = deque()
      queue.append((start, 0))
      directions = [
          (1, 0),
          (0, 1),
          (-1, 0),
          (0, -1),
      ]  # up, right, down, left
  
      # simple bfs
      while queue:
          el = queue.popleft()
          position = el[0]
          steps = el[1]
  
          # check if this position is already visited
          if visited[position[0]][position[1]]:
              continue
  
          visited[position[0]][position[1]] = True
  
          # check if this position is walkable
          if board[position[0]][position[1]] == "t":
              continue
  
          # if the end was reached return steps
          if position == end:
              return steps
  
          newSteps = steps + 1
  
          # add all neighbours at the end of the queue
          for d in directions:
              x = position[0] + d[0]
              y = position[1] + d[1]
  
              if (x < n) and (x >= 0) and (y < m) and (y >= 0):
                  queue.append(((x, y), newSteps))
  
      # the path was not found
      return None
  
label_desc: Use image node_id 1 for calling a global function with example usage: find_min_path(board, start, end) and returns: None, steps