/*
TASK:tab
LANG:C++
*/
#include<iostream>
using namespace std;
int a[128][128],b[128][128],s[128][128],n,m,n1=0,m1=0;
void DFS(int i,int i2)
{
 a[i][i2]=0;
 if(a[i+1][i2])DFS(i+1,i2);
 if(a[i][i2+1])DFS(i,i2+1);
 if(a[i-1][i2])DFS(i-1,i2);
 if(a[i][i2-1])DFS(i,i2-1);
}
int check(int i,int i2)
{
 int i3,i4;
 for(i3=0;i3<n1;i3++)
  for(i4=0;i4<m1;i4++)
   if(!a[i+i3][i2+i4]&&s[i3][i4])return 0;
 return 1;
}
int main()
{
 int i,i2,br=1;
 char c;
 cin>>n>>m;
 for(i=0;i<n;i++)
  for(i2=0;i2<m;i2++)
  {
   cin>>c;
   a[i][i2]=c-'0';
   b[i][i2]=a[i][i2];
  }
 DFS(0,0);
 for(i=0;i<n;i++)
  for(i2=0;i2<m;i2++)
   if(a[i][i2]!=b[i][i2])
   {
    s[i][i2]=1;
    if(i+1>n1)n1=i+1;
    if(i2+1>m1)m1=i2+1;
   }
 for(i=0;i<=n-n1;i++)
  for(i2=0;i2<=m-m1;i2++)
   if(a[i][i2])
    if(check(i,i2))br++;
 cout<<br<<endl;
 return 0;
}
