#include<iostream>
#include<fstream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<climits>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<set>
#include<list>
using namespace std;
#define lli long long int
#define mod 1000000007
#define p push
#define pb push_back
#define mp make_pair
int g[1007][1007];
int nodesVisited, extraEdges;
bool vis[1007];
bool edgeVis[1007][1007];
int ans=0;
int n;
int dfs(int index)
{
if(vis[index])
return 0;
vis[index]=1;
nodesVisited++;
int i;
for(i=1; i<=n; i++)
if(!edgeVis[index][i] && g[index][i])
{
edgeVis[index][i]=edgeVis[i][index]=1;
extraEdges++;
dfs(i);
}
return 0;
}
int main()
{
int i, j;
int totalEdges, c=0, num, ans=0;
cin >> n;
totalEdges=n-1;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
cin >> g[i][j];
for(i=1; i<=n; i++)
if(!vis[i])
{
nodesVisited=extraEdges=0;
dfs(i);
totalEdges=nodesVisited-1;
ans=ans+abs(totalEdges-extraEdges);
}
cout << ans << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGZzdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGNsaW1pdHM+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxzdGFjaz4KI2luY2x1ZGU8c2V0PgojaW5jbHVkZTxsaXN0PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGxpIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIHAgcHVzaAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgoKaW50IGdbMTAwN11bMTAwN107CmludCBub2Rlc1Zpc2l0ZWQsIGV4dHJhRWRnZXM7CmJvb2wgdmlzWzEwMDddOwpib29sIGVkZ2VWaXNbMTAwN11bMTAwN107CgppbnQgYW5zPTA7CmludCBuOwoKaW50IGRmcyhpbnQgaW5kZXgpCnsKCWlmKHZpc1tpbmRleF0pCgkJcmV0dXJuIDA7CgoJdmlzW2luZGV4XT0xOwoJbm9kZXNWaXNpdGVkKys7CgoJaW50IGk7CgoJZm9yKGk9MTsgaTw9bjsgaSsrKQoJCWlmKCFlZGdlVmlzW2luZGV4XVtpXSAmJiBnW2luZGV4XVtpXSkKCQkJewoJCQkJZWRnZVZpc1tpbmRleF1baV09ZWRnZVZpc1tpXVtpbmRleF09MTsKCQkJCWV4dHJhRWRnZXMrKzsKCQkJCWRmcyhpKTsKCQkJfQoKCXJldHVybiAwOwp9CgppbnQgbWFpbigpCgl7CgkJaW50IGksIGo7CgkJaW50IHRvdGFsRWRnZXMsIGM9MCwgbnVtLCBhbnM9MDsKCgkJY2luID4+IG47CgoJCXRvdGFsRWRnZXM9bi0xOwoKCQlmb3IoaT0xOyBpPD1uOyBpKyspCgkJCWZvcihqPTE7IGo8PW47IGorKykKCQkJCWNpbiA+PiBnW2ldW2pdOwoKCQlmb3IoaT0xOyBpPD1uOyBpKyspCgkJCWlmKCF2aXNbaV0pCgkJCQl7CgkJCQkJbm9kZXNWaXNpdGVkPWV4dHJhRWRnZXM9MDsKCQkJCQlkZnMoaSk7CgkJCQkJdG90YWxFZGdlcz1ub2Rlc1Zpc2l0ZWQtMTsKCQkJCQlhbnM9YW5zK2Ficyh0b3RhbEVkZ2VzLWV4dHJhRWRnZXMpOwoJCQkJfQoKCQljb3V0IDw8IGFucyA8PCBlbmRsOwoJCXJldHVybiAwOwoJfQ==