<p>Given an <code>n x n</code> <code>grid</code> containing only values <code>0</code> and <code>1</code>, where <code>0</code> represents water and <code>1</code> represents land, find a water cell such that its distance to the nearest land cell is maximized, and return the distance. If no land or water exists in the grid, return <code>-1</code>.</p> <p>The distance used in this problem is the Manhattan distance: the distance between two cells <code>(x0, y0)</code> and <code>(x1, y1)</code> is <code>|x0 - x1| + |y0 - y1|</code>.</p> <p> </p> <p><strong>Example 1:</strong></p> <img alt="" src="https://assets.leetcode.com/uploads/2019/05/03/1336_ex1.JPG" style="width: 185px; height: 87px;" /> <pre> <strong>Input:</strong> grid = [[1,0,1],[0,0,0],[1,0,1]] <strong>Output:</strong> 2 <strong>Explanation:</strong> The cell (1, 1) is as far as possible from all the land with distance 2. </pre> <p><strong>Example 2:</strong></p> <img alt="" src="https://assets.leetcode.com/uploads/2019/05/03/1336_ex2.JPG" style="width: 184px; height: 87px;" /> <pre> <strong>Input:</strong> grid = [[1,0,0],[0,0,0],[0,0,0]] <strong>Output:</strong> 4 <strong>Explanation:</strong> The cell (2, 2) is as far as possible from all the land with distance 4. </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>n == grid.length</code></li> <li><code>n == grid[i].length</code></li> <li><code>1 <= n <= 100</code></li> <li><code>grid[i][j]</code> is <code>0</code> or <code>1</code></li> </ul>