#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream> 
using namespace std;

int n;
int m;
int a[501][501];

int n_up(int i, int j) 
{  
  if (i-1<0) return 0; 
  return a[i-1][j]; 
}

int n_down(int i, int j)
{
  if (i+1>=n) return 0;
  return a[i+1][j];
}

int n_left(int i, int j)
{
  if (j-1<0) return 0;
  return a[i][j-1];
}

int n_right(int i, int j)
{
  if (j+1>=m) return 0;
  return a[i][j+1];
}

void TryRemove(int i, int j)
{
  if (a[i][j] == 0) return;
  
  // if it has at least 3 bad neighbours, remove it  
  int good_neighbours = n_up(i,j) + n_down(i,j) + n_left(i,j) + n_right(i,j);
  if (good_neighbours <= 1)
  {
    a[i][j]=0;
    if (n_up(i,j)) TryRemove(i-1,j);
    if (n_down(i,j)) TryRemove(i+1, j);
    if (n_left(i,j)) TryRemove(i, j-1);
    if (n_right(i,j)) TryRemove(i, j+1);
  }
}

int main()
{
  // read input
  string tmp;
  getline(cin, tmp);
  stringstream ss(tmp);
  ss >> n; ss >> m;
  for(int i=0; i<n; i++)
  {
    string s;
    getline(cin, s);
    for(int j=0; j<m; j++)
    {
      if (s[j]=='0') a[i][j]=0;
        else a[i][j] = 1;
    }
  }

  // eliminate bad 1s
  for(int i=0; i<n; i++)
    for(int j=0; j<m; j++)
      TryRemove(i, j);

  // count remaining 1s 
  int c;
  for(int i=0; i<n; i++)
    for(int j=0; j<m; j++)
      c += a[i][j];
     
  // write solution
  cout << c;
  return 0;
}