func_code_string: #include <bits/stdc++.h>   using namespace std;   int inf = 1000000000, mxx, mxy, mnx = inf, mny = inf, n, m, i, j, r = 0,       x[2000001], y[2000001];   char a[3001][3001], c[3001][3001];   bool ok(int mxx, int mxy, int mnx, int mny) {     for (int i = 0; i < r; i++)       if (x[i] < mnx || x[i] > mxx || y[i] < mny || y[i] > mxy ||           (x[i] != mxx && x[i] != mnx && y[i] != mxy && y[i] != mny))         return false;     return (mxx - mnx == mxy - mny && mxx < n && mxy < m && mnx >= 0 && mny >= 0);   }   void go(int mxx, int mxy, int mnx, int mny) {     int i, j;     for (i = 0; i < n; i++)       for (j = 0; j < m; j++) {         if (i >= mnx && i <= mxx && j >= mny && j <= mxy &&             ((i == mxx || i == mnx) || (j == mxy || j == mny)) && a[i][j] !=  w )           c[i][j] =  + ;         else           c[i][j] = a[i][j];       }   }   int main() {     cin >> n >> m;     for (i = 0; i < n; i++)       for (j = 0; j < m; j++) {         cin >> a[i][j];         if (a[i][j] ==  w ) {           x[r] = i;           y[r] = j;           r++;         }       }     for (i = 0; i < r; i++) {       if (x[i] > mxx) mxx = x[i];       if (y[i] > mxy) mxy = y[i];       if (x[i] < mnx) mnx = x[i];       if (y[i] < mny) mny = y[i];     }     for (i = 0; i <= m; i++) {       if (ok(mxx, i + (mxx - mnx), mnx, i)) {         go(mxx, i + (mxx - mnx), mnx, i);         for (i = 0; i < n; i++)           for (j = 0; j < m; j++) {             cout << c[i][j];             if (j == m - 1) cout << endl;           }         return 0;       }     }     for (i = 0; i <= n; i++) {       if (ok(i + (mxy - mny), mxy, i, mny)) {         go(i + (mxy - mny), mxy, i, mny);         for (i = 0; i < n; i++)           for (j = 0; j < m; j++) {             cout << c[i][j];             if (j == m - 1) cout << endl;           }         return 0;       }     }     cout <<  -1 ;   }   