#include <bits/stdc++.h>
using namespace std;
int n;
map<char, string> m;
string s;
string bit(int x) {
  string ans;
  ans += x % 2 + '0';
  x /= 2;
  ans += x % 2 + '0';
  x /= 2;
  ans += x % 2 + '0';
  x /= 2;
  ans += x % 2 + '0';
  reverse(ans.begin(), ans.end());
  return ans;
}
string g[5205];
int y[2000], cnt;
bool ok(int x) {
  for (int i = 0; i < n - x; i += x) {
    for (int j = 0; j < n - x; j += x) {
      char c = g[i][j];
      for (int k = 0; k < x; k++) {
        for (int l = 0; l < x; l++) {
          if (g[i + k][j + l] != c) return false;
        }
      }
    }
  }
  return true;
}
int main() {
  for (int i = 0; i < 16; i++) {
    if (i < 10)
      m[i + '0'] = bit(i);
    else
      m[i + 'A' - 10] = bit(i);
  }
  ios::sync_with_stdio(0);
  cin >> n;
  for (int i = (0); i <= n - 1; i++) {
    cin >> s;
    for (int j = (0); j <= s.length() - 1; j++) g[i] += m[s[j]];
  }
  for (int i = (1); i <= n; i++)
    if (n % i == 0) y[++cnt] = i;
  bool flag = true;
  for (int i = (1); i <= cnt; i++) {
    if (!ok(y[i])) {
      cout << y[i - 1] << endl;
      flag = false;
      break;
    }
  }
  if (flag) cout << y[cnt] << endl;
}
