#include <iostream>
#include <cstring>
#define NMAX 4000
#define NUMS 63
typedef unsigned long long unum;
const int nbits = sizeof(unum)*8;
unum
scalar_product_mod2(unum *row, unum *col, int n)
{
unum res, bit, sum;
sum = 0U;
for(int i = 0; i < n; i++)
sum ^= row[i] & col[i];
res = 0U;
for(; sum != 0; sum >>= 1)
res ^= sum & 1;
return res;
}
int
main(int argc, char *argv[])
{
int nums, n;
unum bit, count;
unum rows[NMAX][NUMS];
unum cols[NMAX][NUMS];
char buf[NMAX+2];
std::memset(rows, 0, NMAX*NUMS*sizeof(unum));
std::memset(cols, 0, NMAX*NUMS*sizeof(unum));
std::memset(buf, 0, NMAX+2);
std::cin.sync_with_stdio(false);
std::cin >> n;
std::cin.getline(buf, 0);
for(int i = 0; i < n; i++) {
std::cin.getline(buf, n+1);
for(int j = 0; j < n; j++) {
bit = buf[j] - '0';
rows[i][j/nbits] |= bit << j%nbits;
cols[j][i/nbits] |= bit << i%nbits;
}
}
count = 0;
nums = n/nbits + 1;
if(nums > NUMS)
nums = NUMS;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
count += scalar_product_mod2(rows[i], cols[j], nums);
std::cout << count << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCiNkZWZpbmUgTk1BWCA0MDAwCiNkZWZpbmUgTlVNUyA2MwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdW51bTsKCmNvbnN0IGludCBuYml0cyA9IHNpemVvZih1bnVtKSo4OwoKdW51bQpzY2FsYXJfcHJvZHVjdF9tb2QyKHVudW0gKnJvdywgdW51bSAqY29sLCBpbnQgbikKewoJdW51bSByZXMsIGJpdCwgc3VtOwoJc3VtID0gMFU7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCXN1bSBePSByb3dbaV0gJiBjb2xbaV07CglyZXMgPSAwVTsKCWZvcig7IHN1bSAhPSAwOyBzdW0gPj49IDEpCgkJcmVzIF49IHN1bSAmIDE7CglyZXR1cm4gcmVzOwp9CgppbnQKbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CglpbnQgIG51bXMsIG47Cgl1bnVtIGJpdCwgY291bnQ7Cgl1bnVtIHJvd3NbTk1BWF1bTlVNU107Cgl1bnVtIGNvbHNbTk1BWF1bTlVNU107CgljaGFyIGJ1ZltOTUFYKzJdOwoKCXN0ZDo6bWVtc2V0KHJvd3MsIDAsIE5NQVgqTlVNUypzaXplb2YodW51bSkpOwoJc3RkOjptZW1zZXQoY29scywgMCwgTk1BWCpOVU1TKnNpemVvZih1bnVtKSk7CglzdGQ6Om1lbXNldChidWYsIDAsIE5NQVgrMik7CglzdGQ6OmNpbi5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJc3RkOjpjaW4gPj4gbjsKCXN0ZDo6Y2luLmdldGxpbmUoYnVmLCAwKTsKCglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJc3RkOjpjaW4uZ2V0bGluZShidWYsIG4rMSk7CgkJZm9yKGludCBqID0gMDsgaiA8IG47IGorKykgewoJCQliaXQgPSBidWZbal0gLSAnMCc7CgkJCXJvd3NbaV1bai9uYml0c10gfD0gYml0IDw8IGolbmJpdHM7CgkJCWNvbHNbal1baS9uYml0c10gfD0gYml0IDw8IGklbmJpdHM7CgkJfQoJfQoKCWNvdW50ID0gMDsKCW51bXMgPSBuL25iaXRzICsgMTsKCWlmKG51bXMgPiBOVU1TKQoJCW51bXMgPSBOVU1TOwoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKCQlmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKQoJCQljb3VudCArPSBzY2FsYXJfcHJvZHVjdF9tb2QyKHJvd3NbaV0sIGNvbHNbal0sIG51bXMpOwoJCglzdGQ6OmNvdXQgPDwgY291bnQgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9