(r, c)
| 4 | flag = set() |
| 5 | |
| 6 | def dfs(r, c): |
| 7 | if not(r in range(rows) and c in range(cols)) or board[r][c] != 'O' or (r, c) in flag: |
| 8 | return |
| 9 | flag.add((r, c)) |
| 10 | return (dfs(r + 1, c), dfs(r - 1, c), dfs(r, c + 1), dfs(r, c - 1)) |
| 11 | |
| 12 | # traverse through the board |
| 13 | for r in range(rows): |