func_code_string: #include <bits/stdc++.h>   using namespace std;   int fuck[2010], de[2010], n;   char mp[2010][2010];   int check() {     sort(fuck + 1, fuck + 1 + n);     int sum = 0;     for (int i = 1; i < n; i++) {       sum += fuck[i];       if (sum == i * (i - 1) / 2) return 0;     }     return 1;   }   int main() {     cin >> n;     for (int i = 1; i <= n; i++) {       scanf( %s , mp[i] + 1);       for (int j = 1; j <= n; j++) {         if (mp[i][j] ==  1 ) de[i]++, fuck[i] = de[i];       }     }     if (check()) {       cout << 0 <<     << 1;       return 0;     }     if (n <= 6) {       int minn = 1e9, res = 0;       for (int i = 1; i < (1 << n); i++) {         int now = 0;         for (int j = 1; j <= n; j++) {           if ((1 << (j - 1)) & i) {             now++;             de[j] = n - 1 - de[j];             for (int k = 1; k <= n; k++) {               if (k == j) continue;               if (mp[j][k] ==  1 ) {                 mp[j][k] =  0 ;                 mp[k][j] =  1 ;                 de[k]++;               } else {                 mp[j][k] =  1 ;                 mp[k][j] =  0 ;                 de[k]--;               }             }           }         }         for (int j = 1; j <= n; j++) fuck[j] = de[j];         for (int j = 1; j <= n; j++) {           if ((1 << (j - 1)) & i) {             de[j] = n - 1 - de[j];             for (int k = 1; k <= n; k++) {               if (k == j) continue;               if (mp[j][k] ==  1 ) {                 mp[j][k] =  0 ;                 mp[k][j] =  1 ;                 de[k]++;               } else {                 mp[j][k] =  1 ;                 mp[k][j] =  0 ;                 de[k]--;               }             }           }         }         if (now > minn) continue;         if (check()) {           if (now < minn)             minn = now, res = 1;           else             res++;         }       }       if (minn == 1e9)         cout << -1;       else {         for (int i = 1; i <= minn; i++) res *= i;         cout << minn <<     << res;       }     } else {       int res = 0;       for (int j = 1; j <= n; j++) {         de[j] = n - 1 - de[j];         for (int k = 1; k <= n; k++) {           if (k == j) continue;           if (mp[j][k] ==  1 ) {             mp[j][k] =  0 ;             mp[k][j] =  1 ;             de[k]++;           } else {             mp[j][k] =  1 ;             mp[k][j] =  0 ;             de[k]--;           }         }         for (int j = 1; j <= n; j++) fuck[j] = de[j];         de[j] = n - 1 - de[j];         for (int k = 1; k <= n; k++) {           if (k == j) continue;           if (mp[j][k] ==  1 ) {             mp[j][k] =  0 ;             mp[k][j] =  1 ;             de[k]++;           } else {             mp[j][k] =  1 ;             mp[k][j] =  0 ;             de[k]--;           }         }         if (check()) res++;       }       cout << 1 <<     << res << endl;     }   }   