#include <iostream>
#include <cmath>
const int N = 20;
int n, ans = 1145141919;
int sz[N][N], pic[N][N];
void in () {
scanf ("%d", &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf ("%d", &sz[i][j]);
}
int main () {
in();
if (n == 1 && pic[1][1]) {
puts("0");
return 0;
}
for (int a = 1; a < std::pow(2, n); a++) {
for (int i = 2; i <= n; i++)
for (int j = 1; j <= n; j++)
pic[i][j] = sz[i][j];
int t = n;
pic[1][n]++;
while (pic[1][t] >= 2 && t) {
pic[1][t] = 0;
pic[1][--t]++;
}
for (int i = 1; i < n; i++)
for (int j = 1; j <= n; j++)
if ((pic[i - 1][j] + pic[i][j - 1] + pic[i][j + 1]) % 2)
pic[i + 1][j] = 1;
int num = 0, f = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) {
if (!sz[i][j] && pic[i][j])
num++;
if ((pic[i - 1][j] + pic[i + 1][j] + pic[i][j - 1] + pic[i][j + 1]) % 2 || sz[i][j] && !pic[i][j]) {
f = 1;
break;
}
}
if (!f)
ans = std::min(ans, num);
}
printf ("%d\n", ans);
return 0;
}