#include <iostream>
#include <cstring>
#define NMAX 4000
#define INTS 125
const int nbits = sizeof(int)*8;
int
onlyone(unsigned int *col, unsigned int *row, int n)
{
int bits;
unsigned int bit, prod;
bits = 0;
for(int i = 0; i < n; i++) {
prod = row[i] & col[i];
if(prod == 0)
continue;
for(; prod != 0; prod >>= 1) {
bit = prod & 1U;
if(bit == 0U)
continue;
if(bits != 0)
return 0;
bits = 1;
}
}
return bits;
}
int
main(int argc, char *argv[])
{
int bit, ints, n, count;
unsigned int rows[NMAX][INTS];
unsigned int cols[NMAX][INTS];
char buf[NMAX+2];
std::memset(rows, 0, NMAX*INTS*sizeof(int));
std::memset(cols, 0, NMAX*INTS*sizeof(int));
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;
ints = n/nbits + 1;
if(ints > INTS)
ints = INTS;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
count += onlyone(rows[i], cols[j], ints);
std::cout << count << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCiNkZWZpbmUgTk1BWCA0MDAwCiNkZWZpbmUgSU5UUyAxMjUKCmNvbnN0IGludCBuYml0cyA9IHNpemVvZihpbnQpKjg7CgppbnQKb25seW9uZSh1bnNpZ25lZCBpbnQgKmNvbCwgdW5zaWduZWQgaW50ICpyb3csIGludCBuKQp7CglpbnQgYml0czsKCXVuc2lnbmVkIGludCBiaXQsIHByb2Q7CgliaXRzID0gMDsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlwcm9kID0gcm93W2ldICYgY29sW2ldOwoJCWlmKHByb2QgPT0gMCkKCQkJY29udGludWU7CgkJZm9yKDsgcHJvZCAhPSAwOyBwcm9kID4+PSAxKSB7CgkJCWJpdCA9IHByb2QgJiAxVTsKCQkJaWYoYml0ID09IDBVKQoJCQkJY29udGludWU7CgkJCWlmKGJpdHMgIT0gMCkKCQkJCXJldHVybiAwOwoJCQliaXRzID0gMTsKCQl9Cgl9CglyZXR1cm4gYml0czsKfQoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJaW50IGJpdCwgaW50cywgbiwgY291bnQ7Cgl1bnNpZ25lZCBpbnQgcm93c1tOTUFYXVtJTlRTXTsKCXVuc2lnbmVkIGludCBjb2xzW05NQVhdW0lOVFNdOwoJY2hhciBidWZbTk1BWCsyXTsKCglzdGQ6Om1lbXNldChyb3dzLCAwLCBOTUFYKklOVFMqc2l6ZW9mKGludCkpOwoJc3RkOjptZW1zZXQoY29scywgMCwgTk1BWCpJTlRTKnNpemVvZihpbnQpKTsKCXN0ZDo6bWVtc2V0KGJ1ZiwgMCwgTk1BWCsyKTsKCXN0ZDo6Y2luLnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CglzdGQ6OmNpbiA+PiBuOwoJc3RkOjpjaW4uZ2V0bGluZShidWYsIDApOwoKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlzdGQ6OmNpbi5nZXRsaW5lKGJ1ZiwgbisxKTsKCQlmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CgkJCWJpdCA9IGJ1ZltqXSAtICcwJzsKCQkJcm93c1tpXVtqL25iaXRzXSB8PSBiaXQgPDwgaiVuYml0czsKCQkJY29sc1tqXVtpL25iaXRzXSB8PSBiaXQgPDwgaSVuYml0czsKCQl9Cgl9CgoJY291bnQgPSAwOwoJaW50cyA9IG4vbmJpdHMgKyAxOwoJaWYoaW50cyA+IElOVFMpCgkJaW50cyA9IElOVFM7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCWZvcihpbnQgaiA9IDA7IGogPCBuOyBqKyspCgkJCWNvdW50ICs9IG9ubHlvbmUocm93c1tpXSwgY29sc1tqXSwgaW50cyk7CgkKCXN0ZDo6Y291dCA8PCBjb3VudCA8PCBzdGQ6OmVuZGw7CgoJcmV0dXJuIDA7Cn0=