const int MAXN=505,MAXM=MAXN*MAXN;
int a[MAXN][MAXN],b[MAXN][MAXN],s[MAXN],c[MAXM<<1];
int main()
{
int n=read_int(),m=read_int();
LL ans=0;
_rep(i,1,n)_rep(j,1,m){
a[i][j]=read_int();
if(!a[i][j])a[i][j]=-1;
b[i][j]=b[i-1][j]+a[i][j];
}
_rep(i,1,n)_rep(j,i+1,n){
int last=0;
s[last]=MAXM;
_rep(k,1,m){
if(a[i][k]==-1||a[j][k]==-1){
_rep(t,last+1,k){
if(b[j][t]-b[i-1][t]==j-i+1)
c[s[t]]--;
}
s[last=k]=MAXM;
}
else{
s[k]=s[k-1]+b[j-1][k]-b[i][k];
if(b[j][k]-b[i-1][k]==j-i+1)
ans+=c[s[k-1]-1]+c[s[k-1]]+c[s[k-1]+1],c[s[k]]++;
}
}
_rep(k,last+1,m){
if(b[j][k]-b[i-1][k]==j-i+1)
c[s[k]]--;
}
}
enter(ans);
return 0;
}