You are given an `m x n` grid where each cell can have one of three values:
- `0` representing an empty cell,
- `1` representing a fresh orange, or
- `2` representing a rotten orange.
Every minute, any fresh orange that is 4-directionally adjacent to a rotten orange becomes rotten.
Return the minimum number of minutes that must elapse until no cell has a fresh orange. If this is impossible, return `-1`.
### Constraints
- `m == grid.length`
- `n == grid[i].length`
- `1 <= m, n <= 10`
- `grid[i][j]` is `0`, `1`, or `2`.
### Input Format
First line contains two integers `m` and `n`.
Next `m` lines contain `n` space-separated integers representing the grid.
### Output Format
Print the integer minimum number of minutes, or `-1`.
Sample Cases
Example 1Sample Case
Input: 3 3
2 1 1
1 1 0
0 1 1
Output: 4
Example 2Sample Case
Input: 3 3
2 1 1
0 1 1
1 0 1
Output: -1
Example 3Sample Case
Input: 1 2
0 2
Output: 0
Example 4Sample Case
Input: 1 2
1 2
Output: 1
Constraints
Runtime Limit: 2000 ms per test batch
Memory Limit: 256 MB
Standard I/O stream reading
Official submissions are evaluated against hidden test cases on the server to verify time & memory complexity.