func_code_string: #include <bits/stdc++.h>   using namespace std;   const int dy[] = {-1, 0, 1, 0}, dx[] = {0, -1, 0, 1};   int h, w;   string in[1000];   void put(int y1, int x1, int y2, int x2) {     bool use[10] = {};     for (int d = 0; d < 4; d++) {       int y = y1 + dy[d], x = x1 + dx[d];       if (y < 0 || x < 0 || y >= h || x >= w || !isdigit(in[y][x])) continue;       use[in[y][x] -  0 ] = 1;     }     for (int d = 0; d < 4; d++) {       int y = y2 + dy[d], x = x2 + dx[d];       if (y < 0 || x < 0 || y >= h || x >= w || !isdigit(in[y][x])) continue;       use[in[y][x] -  0 ] = 1;     }     for (int i = 0; i < 10; i++)       if (!use[(y1 + x1 * 3 + i) % 10]) {         in[y1][x1] = in[y2][x2] =  0  + (y1 + x1 * 3 + i) % 10;         break;       }   }   int get(int y, int x, int c, bool paint) {     if (paint)       in[y][x] =  0  + c;     else       in[y][x] =  - ;     for (int d = 0; d < 4; d++) {       int ny = y + dy[d], nx = x + dx[d];       if (ny < 0 || nx < 0 || ny >= h || nx >= w) continue;       if (!paint && isdigit(in[ny][nx])) c = in[ny][nx] -  0 ;       if (paint && in[ny][nx] ==  -  || !paint && in[ny][nx] ==  . )         get(ny, nx, c, paint);     }     return c;   }   void run() {     cin >> h >> w;     for (int i = 0; i < h; i++) cin >> in[i];     for (int i = 0; i < h; i++)       for (int j = 0; j < w; j++) {         if (j < w - 1 && in[i][j] ==  .  && in[i][j + 1] ==  . )           put(i, j, i, j + 1);         if (i < h - 1 && in[i][j] ==  .  && in[i + 1][j] ==  . )           put(i, j, i + 1, j);       }     for (int i = 0; i < h; i++)       for (int j = 0; j < w; j++)         if (in[i][j] ==  . ) {           int c = get(i, j, -1, 0);           if (c < 0) {             cout << -1 << endl;             return;           }           get(i, j, c, 1);         }     for (int i = 0; i < h; i++) cout << in[i] << endl;   }   int main() {     run();     return 0;   }   