#include <bits/stdc++.h>
using namespace std;
const int Max_N = 2e3, Mod = 998244353;
int n, d[Max_N + 5], D[Max_N + 5], opt[Max_N + 5];
char a[Max_N + 5][Max_N + 5];
inline bool Chck() {
  sort(D + 1, D + n + 1);
  int sum = 0;
  for (int i = 1; i < n; i++) {
    sum += D[i];
    if (sum == i * (i - 1) / 2) return false;
  }
  return true;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%s", a[i] + 1);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (a[i][j] == '1') ++d[j];
  if (n <= 6) {
    int ans = -1, cnt = 0;
    for (int s = 0; s < 1 << n; s++) {
      for (int i = 1; i <= n; i++) D[i] = d[i], opt[i] = 0;
      for (int i = 1; i <= n; i++)
        if ((1 << i - 1) & s) opt[i] = 1;
      for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
          if (a[i][j] == '1' && (opt[i] ^ opt[j])) --D[j], ++D[i];
      if (Chck()) {
        int sum = 0;
        for (int i = 1; i <= n; i++)
          if ((1 << i - 1) & s) ++sum;
        if (sum < ans || ans == -1)
          ans = sum, cnt = 1;
        else
          cnt += sum == ans;
      }
    }
    if (ans == -1)
      puts("-1");
    else {
      for (int i = 1; i <= ans; i++) cnt = 1ll * cnt * i % Mod;
      printf("%d %d\n", ans, cnt);
    }
  } else {
    for (int i = 1; i <= n; i++) D[i] = d[i];
    if (Chck()) {
      puts("0 1");
      return 0;
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) D[j] = d[j];
      for (int j = 1; j <= n; j++)
        if (a[i][j] == '1')
          --D[j], ++D[i];
        else if (i != j)
          ++D[j], --D[i];
      if (Chck()) ++ans;
    }
    printf("1 %d\n", ans);
  }
  return 0;
}
