#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 3e3 + 5;
// Đây là một bài kinh điển của bitset
// Còn có tên gọi là đếm số tam giác hay đếm số chu trình độ dài 3 có trong đồ thị vô hướng
// Với mỗi cạnh (i, j), ta cần đếm số lượng đỉnh k thoả mãn tồn tại cạnh (i, k) và cạnh (j, k)
// Thuật trâu: O(n^3) / O(m * n)
// => Tối ưu bằng bitset, với mỗi đỉnh i ta có bs[i] là bitset đại diện cho tập đỉnh kề với i
// bs[i][j] = 1 nếu tồn tại cạnh (i, j),
// = 0, trong trường hợp ngược lại
// => Với mỗi cạnh (i, j) thì tập đỉnh k cần tìm chính là phần giao giữa bs[i] và bs[j]
// => O(n^3 / 64) / O(m * n / 64)
int n;
bitset<N> bs[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 0; i < n; i++) {
string s; cin >> s;
for (int j = 0; j < n; j++) {
bs[i][j] = s[j] - '0';
}
}
ll ans = 0;
for (int i = 0; i + 1 < n; i++) {
for (int j = i + 1; j < n; j++) {
if (bs[i][j]) {
ans += (bs[i] & bs[j]).count();
}
}
}
ans /= 3; // Theo cách đếm này thì mỗi bộ (i, j, k) thoả mãn bị đếm lặp 3 lần
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAzZTMgKyA1OyAKCi8vIMSQw6J5IGzDoCBt4buZdCBiw6BpIGtpbmggxJFp4buDbiBj4bunYSBiaXRzZXQKLy8gQ8OybiBjw7MgdMOqbiBn4buNaSBsw6AgxJHhur9tIHPhu5EgdGFtIGdpw6FjIGhheSDEkeG6v20gc+G7kSBjaHUgdHLDrG5oIMSR4buZIGTDoGkgMyBjw7MgdHJvbmcgxJHhu5MgdGjhu4sgdsO0IGjGsOG7m25nCi8vIFbhu5tpIG3hu5dpIGPhuqFuaCAoaSwgaiksIHRhIGPhuqduIMSR4bq/bSBz4buRIGzGsOG7o25nIMSR4buJbmggayB0aG/huqMgbcOjbiB04buTbiB04bqhaSBj4bqhbmggKGksIGspIHbDoCBj4bqhbmggKGosIGspCi8vIFRodeG6rXQgdHLDonU6IE8obl4zKSAvIE8obSAqIG4pCi8vID0+IFThu5FpIMawdSBi4bqxbmcgYml0c2V0LCB24bubaSBt4buXaSDEkeG7iW5oIGkgdGEgY8OzIGJzW2ldIGzDoCBiaXRzZXQgxJHhuqFpIGRp4buHbiBjaG8gdOG6rXAgxJHhu4luaCBr4buBIHbhu5tpIGkKLy8gYnNbaV1bal0gPSAxIG7hur91IHThu5NuIHThuqFpIGPhuqFuaCAoaSwgaiksIAovLyAgICAgICAgICA9IDAsIHRyb25nIHRyxrDhu51uZyBo4bujcCBuZ8aw4bujYyBs4bqhaQovLyA9PiBW4bubaSBt4buXaSBj4bqhbmggKGksIGopIHRow6wgdOG6rXAgxJHhu4luaCBrIGPhuqduIHTDrG0gY2jDrW5oIGzDoCBwaOG6p24gZ2lhbyBnaeG7r2EgYnNbaV0gdsOgIGJzW2pdCi8vID0+IE8obl4zIC8gNjQpIC8gTyhtICogbiAvIDY0KQppbnQgbjsgIApiaXRzZXQ8Tj4gYnNbTl07IAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG47IAoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlzdHJpbmcgczsgY2luID4+IHM7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBuOyBqKyspIHsKCQkJYnNbaV1bal0gPSBzW2pdIC0gJzAnOyAKCQl9IAoJfQoKCWxsIGFucyA9IDA7IAoJZm9yIChpbnQgaSA9IDA7IGkgKyAxIDwgbjsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgbjsgaisrKSB7CgkJCWlmIChic1tpXVtqXSkgewoJCQkJYW5zICs9IChic1tpXSAmIGJzW2pdKS5jb3VudCgpOyAKCQkJfQoJCX0KCX0KCWFucyAvPSAzOyAvLyBUaGVvIGPDoWNoIMSR4bq/bSBuw6B5IHRow6wgbeG7l2kgYuG7mSAoaSwgaiwgaykgdGhv4bqjIG3Do24gYuG7iyDEkeG6v20gbOG6t3AgMyBs4bqnbiAKCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQ==