code: def dfs(self, grid, row, col):
      # base case, if not 1, then its not an island
      if (
          row < 0
          or col < 0
          or row >= len(grid)
          or col >= len(grid[0])
          or grid[row][col] != "1"
      ):
          return
      # update grid with islands we have visited already to not recount
      grid[row][col] = "#"
      self.dfs(grid, row + 1, col)
      self.dfs(grid, row - 1, col)
      self.dfs(grid, row, col + 1)
      self.dfs(grid, row, col - 1)
  
label_desc: Use image node_id 2 for calling the Solution obj's underlying member method code with example usage: obj.dfs(grid, row, col) without return types