func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1000 + 10;   int n, m;   int px[] = {0, 1, -1, 0};   int py[] = {1, 0, 0, -1};   bool dig[10];   char a[N][N];   bool inside(int x, int y) { return x >= 0 && y >= 0 && x < n && y < m; }   bool alone(int x, int y) {     int k, x2, y2;     for (k = 0; k < 4; k++) {       x2 = x + px[k];       y2 = y + py[k];       if (!inside(x2, y2)) continue;       if (a[x2][y2] ==  . ) return false;     }     return true;   }   void go(int x, int y) {     a[x][y] =  * ;     int k, x2, y2;     for (k = 0; k < 4; k++) {       x2 = x + px[k];       y2 = y + py[k];       if (!inside(x2, y2)) continue;       if (a[x2][y2] ==  X ) go(x2, y2);       if (isdigit(a[x2][y2])) dig[a[x2][y2] -  0 ] = 1;     }   }   char getColor(int x, int y) {     memset(dig, 0, sizeof(dig));     go(x, y);     int i;     for (i = 0; i < 10; i++)       if (dig[i] == 0) return  0  + i;     assert(false);   }   void fill(int x, int y, char c) {     a[x][y] = c;     int k, x2, y2;     for (k = 0; k < 4; k++) {       x2 = x + px[k];       y2 = y + py[k];       if (!inside(x2, y2)) continue;       if (a[x2][y2] ==  * ) fill(x2, y2, c);     }   }   void print() {     int i;     for (i = 0; i < n; i++) printf( %s n , a[i]);     printf(  n n );   }   int main() {     scanf( %d%d , &n, &m);     int i, j, k, t;     for (i = 0; i < n; i++) scanf( %s , a[i]);     int x[3], y[3];     for (i = 0; i < n; i++)       for (j = 0; j < m; j++) {         if (a[i][j] !=  . ) continue;         x[0] = i;         y[0] = j;         for (k = 0; k < 2; k++) {           x[1] = x[0] + px[k];           y[1] = y[0] + py[k];           if (!inside(x[1], y[1])) continue;           if (a[x[1]][y[1]] ==  . ) break;         }         if (k == 2) {           printf( -1 n );           return 0;         }         a[x[0]][y[0]] =  X ;         a[x[1]][y[1]] =  X ;         for (t = 0; t < 2; t++) {           for (k = 0; k < 4; k++) {             x[2] = x[t] + px[k];             y[2] = y[t] + py[k];             if (!inside(x[2], y[2])) continue;             if (a[x[2]][y[2]] !=  . ) continue;             if (alone(x[2], y[2])) a[x[2]][y[2]] =  X ;           }         }         fill(x[0], y[0], getColor(x[0], y[0]));       }     for (i = 0; i < n; i++) printf( %s n , a[i]);     return 0;   }   