A mobile robot must move through a simplified floor layout containing Supermicro SuperServer rack positions and open aisles. Given a rectangular grid, find the minimum number of moves from a start cell to a goal cell.
A cell containing 0 is traversable, while a cell containing 1 is blocked. In one move, the robot may travel one cell up, down, left, or right. Return the minimum number of moves, or -1 if the goal cannot be reached.
Implement shortest_path(grid, start, goal), where grid is a list of equal-length lists containing 0 or 1, and start and goal are two-element [row, column] coordinates. Return an integer.
def shortest_path(grid, start, goal):