#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const double EPS = 1e-9;
const double PI = acos(-1.);
const long long LL_INF = 1e17 + 16;
const int INF = 1e9 + 10;
const long long MOD = 1e9 + 7;
const int MAXN = 2e3 + 5;
char c[MAXN][MAXN];
int g1[MAXN], v1[MAXN], g2[MAXN], v2[MAXN];
void solve() {
  int n;
  scanf("%d", &n);
  for (int i = (0); i < (int)(n); i++) {
    scanf("%s", &c[i][0]);
  }
  int ans = 0;
  for (int d = n - 1; d >= 1; d--) {
    for (int i = (0); i < (int)(n); i++) {
      int j = i + d;
      if (j < n) {
        int val = (c[i][j] ^ '0' ^ g1[i] ^ v1[j]);
        if (val) {
          ans++;
          g1[i] ^= 1;
          v1[j] ^= 1;
        }
      }
    }
    for (int j = (0); j < (int)(n); j++) {
      int i = j + d;
      if (i < n) {
        int val = (c[i][j] ^ '0' ^ g2[i] ^ v2[j]);
        if (val) {
          ans++;
          g2[i] ^= 1;
          v2[j] ^= 1;
        }
      }
    }
  }
  for (int i = (0); i < (int)(n); i++) {
    int val = (c[i][i] ^ '0' ^ g1[i] ^ v1[i] ^ g2[i] ^ v2[i]);
    if (val) {
      ans++;
    }
  }
  printf("%d\n", ans);
}
int main() {
  int t = 1;
  while (t--) {
    solve();
  }
}
