class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
if len(grid) == 0:
return 0
n, m = len(grid), len(grid[0])
def dfs(i, j):
if not 0 <= i < n or not 0 <= j < m:
return
if grid[i][j] in ('0', '2'):
return
grid[i][j] = '2'
dfs(i - 1, j)
dfs(i + 1, j)
dfs(i, j - 1)
dfs(i, j + 1)
count = 0
for i in range(n):
for j in range(m):
if grid[i][j] == '1':
count += 1
dfs(i, j)
return count