func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     int x, y;   };   vector<node> q;   int n, m, sum[2020][2020];   char g[2020][2020];   void init() {     for (int i = 0; i < (n); i++)       for (int j = 0; j < (m); j++)         if (g[i][j] ==  w ) q.push_back((node){i, j});     for (int i = 0; i < (n); i++)       for (int j = 0; j < (m); j++)         if (g[i][j] ==  w ) sum[i][j] = 1;     for (int i = 0; i < (n); i++)       for (int j = 0; j < (m); j++)         if (j - 1 >= 0) sum[i][j] = sum[i][j - 1] + sum[i][j];     for (int i = 0; i < (m); i++)       for (int j = 0; j < (n); j++)         if (j - 1 >= 0) sum[j][i] = sum[j - 1][i] + sum[j][i];   }   bool cmpx(node a, node b) { return a.x < b.x; }   bool cmpy(node a, node b) { return a.y < b.y; }   int getlen() {     int res = -1;     sort(q.begin(), q.end(), cmpx);     res = max(res, abs(q[0].x - q[q.size() - 1].x) + 1);     sort(q.begin(), q.end(), cmpy);     res = max(res, abs(q[0].y - q[q.size() - 1].y) + 1);     return res;   }   int getarea(int x1, int y1, int x2, int y2) {     if (x1 > x2 || y1 > y2) return 0;     int res = sum[x2][y2];     if (x1 - 1 >= 0) res -= sum[x1 - 1][y2];     if (y1 - 1 >= 0) res -= sum[x2][y1 - 1];     if (x1 - 1 >= 0 && y1 - 1 >= 0) res += sum[x1 - 1][y1 - 1];     return res;   }   bool check(int x, int y, int len) {     int x2 = x - len + 1;     int y2 = y - len + 1;     int in = getarea(x2 + 1, y2 + 1, x - 1, y - 1);     int out = getarea(0, 0, n - 1, m - 1) - getarea(x2, y2, x, y);     if (in || out)       return false;     else       return true;   }   void filling(int x, int y, int x2, int y2) {     for (int i = x; i <= x2; i++)       for (int j = y; j <= y2; j++)         if (i == x || i == x2 || j == y || j == y2)           g[i][j] = (g[i][j] ==  . ) ?  +  :  w ;   }   int main() {     scanf( %d%d , &n, &m);     for (int i = 0; i < (n); i++) scanf( %s , g[i]);     init();     int len = getlen();     bool flg = 0;     for (int i = 0; i < (n); i++)       for (int j = 0; j < (m); j++)         if (i + 1 >= len && j + 1 >= len) {           if (flg) break;           if (check(i, j, len)) {             flg = true;             filling(i - len + 1, j - len + 1, i, j);             break;           }         }     if (flg)       for (int i = 0; i < (n); i++) printf( %s n , g[i]);     else       printf( -1 n );     return 0;   }   