#include <bits/stdc++.h>
#pragma 03
using namespace std;
long long n;
long long tmp[2005], deg[2005], am[2005][2005];
bool scc() {
  for (int i = 0; i < n; i++) tmp[i] = deg[i];
  sort(tmp, tmp + n);
  long long sum = 0;
  for (int i = 0; i < n - 1; i++) {
    sum += (tmp[i] - i);
    if (sum == 0) return false;
  }
  return true;
}
void invert(long long i) {
  for (int j = 0; j < n; j++) {
    if (am[i][j] == 0)
      deg[i]++, deg[j]--, am[i][j]++, am[j][i]--;
    else
      deg[i]--, deg[j]++, am[i][j]--, am[j][i]++;
  }
}
string generic[2005];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> generic[i];
    for (int j = 0; j < n; j++) {
      if (generic[i][j] == '1')
        am[i][j] = 1, deg[i]++;
      else
        am[i][j] = 0;
    }
  }
  if (scc()) {
    cout << 0 << " " << 1 << '\n';
    return 0;
  }
  long long cnt = 0;
  for (int i = 0; i < n; i++) {
    invert(i);
    if (scc()) cnt++;
    invert(i);
  }
  if (cnt > 0)
    cout << 1 << " " << cnt << '\n';
  else if (n == 4)
    cout << -1 << '\n';
  else if (n == 6)
    cout << 2 << " " << 18 << '\n';
  return 0;
}
