with open("input.txt") as f: grid = [i.split() for i in f.readlines()] #for line in grid: #print(line) def maxRegion(grid): max_cell_counter = 0 for row in range(len(grid)): for col in range(len(grid[0])): if grid[row][col] == 'Y': region_cell_count = count_region_cells(grid, row, col) max_cell_counter = max(max_cell_counter, region_cell_count) return max_cell_counter def count_region_cells(grid, row, col): # if out of bounds if any([row < 0, col < 0, row >= len(grid), col >= len(grid[0])]): return 0 # if already visited if grid[row][col] == 0 or grid[row][col] == "N": return 0 cell_count = 1 grid[row][col] = 0 # marking as visited for r in range(row - 1, row + 2): for c in range(col - 1, col + 2): if r == row and c == col: continue cell_count += count_region_cells(grid, r, c) return cell_count print(maxRegion(grid))