#include static int a, b, qn; static char t[200][200], volt[200][200], sol[200][200], q[40000][2]; void dfs(int i, int j, int m, int *f, int *g) { if (t[i][j] != '.' || volt[i][j]) return; volt[i][j] = m; q[qn][0] = i; q[qn++][1] = j; if ((i+j)&1) ++*f; else ++*g; if (i > 0) dfs(i-1, j, m, f, g); if (j > 0) dfs(i, j-1, m, f, g); if (i < a-1) dfs(i+1, j, m, f, g); if (j < b-1) dfs(i, j+1, m, f, g); } int main(void) { for (;;) { int i, j, k, l, m = 0, x, y; scanf("%d %d\n", &a, &b); if (a == 0) return 0; for (i = 0; i < a; i++) { gets(t[i]); for (j = 0; j < b; j++) { volt[i][j] = 0; } } for (i = 0; i < a; i++) { for (j = 0; j < b; j++) { if (t[i][j] == '.' && !volt[i][j]) { int f = 0, g = 0; qn = 0; dfs(i, j, ++m, &f, &g); for (k = 0; k < qn; k++) { x = q[k][0]; y = q[k][1]; if ((x+y)&1) sol[x][y] = f > g ? 'B' : 'A'; else sol[x][y] = f < g ? 'B' : 'A'; } } } } for (i = 0; i < a; i++) { for (j = 0; j < b; j++) { putchar(t[i][j] == '.' ? sol[i][j] : '#'); } putchar('\n'); } putchar('\n'); } }