
You are given a m x n matrix grid consisting of non-negative integers where grid[row][col] represents the minimum time required to be able to visit the cell (row, col) , which means you can visit the cell (row, col) only when the time you visit it is greater than or equal to grid[row][col] .
You are standing in the top-left cell of the matrix in the 0 ^th second, and you must move to any adjacent cell in the four directions: up, down, left, and right. Each move you make takes 1 second.
Return the minimum time required in which you can visit the bottom-right cell of the matrix . If you cannot visit the bottom-right cell, then return -1 .
m == grid.lengthn == grid[i].length2 <= m, n <= 10004 <= m * n <= 10 ^50 <= grid[i][j] <= 10 ^5grid[0][0] == 0