// Tiene un error a propósito: pinta del mismo color que ya tenía la región.
#include <stdio.h>

#define ROWS 3
#define COLS 3

void fill(char grid[][COLS + 1], int row, int col, char old_mark, char new_mark) {
    if (row < 0 || row >= ROWS || col < 0 || col >= COLS) {
        return;
    }
    if (grid[row][col] != old_mark) {
        return;
    }
    grid[row][col] = new_mark;
    fill(grid, row - 1, col, old_mark, new_mark);
    fill(grid, row + 1, col, old_mark, new_mark);
    fill(grid, row, col - 1, old_mark, new_mark);
    fill(grid, row, col + 1, old_mark, new_mark);
}

int main(void) {
    char grid[ROWS][COLS + 1] = {
        "...",
        ".#.",
        "...",
    };

    fill(grid, 0, 0, grid[0][0], '.');
    printf("%s\n%s\n%s\n", grid[0], grid[1], grid[2]);
    return 0;
}
