Given an m x n integer matrix grid, where each cell contains either 0 (empty) or 1 (obstacle), you may move one step at a time in any of the four directions (up, down, left, right), but only into empty cells.
Return the minimum number of steps required to travel from the upper-left corner (0, 0) to the lower-right corner (m - 1, n - 1), given that you are allowed to eliminate at most k obstacles along the way. If no such path exists, return −1.
Constraints:
m == grid.length
n == grid[i].length
...