#include<bits/stdc++.h>
using namespace std;
int n,m,cnt=0,t=0,k;
struct node{
int n;
int d1,d2,d3,d4;
}a[101][101];
char x;
int dfs1(int x,int y){
int x1=x,y1=y;
int ans=0;
while(x1>=1&&y1>=1){
x1--;
y1--;
if(a[x1][y1].n)
ans++;
else{
break;
}
}
return ans;
}
int dfs2(int x,int y){
int x1=x,y1=y;
int ans=0;
while(x1>=1&&y1<=n){
x1--;
y1++;
if(a[x1][y1].n)
ans++;
else{
break;
}
}
return ans;
}
int dfs3(int x,int y){
int x1=x,y1=y;
int ans=0;
while(x1<=n&&y1>=1){
x1++;
y1--;
if(a[x1][y1].n)
ans++;
else{
break;
}
}
return ans;
}
int dfs4(int x,int y){
int x1=x,y1=y;
int ans=0;
while(x1<=n&&y1<=n){
x1++;
y1++;
if(a[x1][y1].n)
ans++;
else{
break;
}
}
return ans;
}
bool ts(int x,int y){
if(a[x][y+1].n&&a[x+1][y].n&&a[x+1][y+1].n)
return 1;
return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>x;
a[i][j].n=x-'0';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j].n==1){
if(ts(i,j)){
cnt+=min(min(dfs1(i,j),dfs2(i,j+1)),min(dfs3(i+1,j),dfs4(i+1,j+1)))+1;
}
cnt+=min(min(dfs1(i,j),(dfs2(i,j))),min(dfs3(i,j),dfs4(i,j)));
}
}
}
cout<<cnt;
return 0;
}