#include<bits/stdc++.h>
using namespace std;
int n,m,x[4]={0,1,-1,0},y[4]={1,0,0,-1},p[505],q[505],cnt;
char a[505][505];
bool flag[505][505]={false};
void bfs(int x1,int y1);
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=0;i<=n+1;i++)
{
if(a[i][1]=='0' && flag[i][1]==false) bfs(i,1);
if(a[i][m]=='0' && flag[i][m]==false) bfs(i,m);
}
for(int i=0;i<=m+1;i++)
{
if(a[1][i]=='0' && flag[1][i]==false) bfs(1,i);
if(a[n][i]=='0' && flag[n][i]==false) bfs(n,i);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]=='0') cnt++;
}
}
cout<<cnt;
return 0;
}
void bfs(int x1,int y1)
{
int head=0,tail=1;
p[1]=x1;
q[1]=y1;
do
{
head++;
for(int i=0;i<4;i++)
{
int xx=p[head]+x[i],yy=q[head]+y[i];
if(xx>=1 && xx<=n && yy>=1 && yy<=m && a[xx][yy]=='0' && flag[xx][yy]==false)
{
a[xx][yy]='*';
flag[xx][yy]=false;
tail++;
p[tail]=xx;
q[tail]=yy;
}
}
}while(head<tail);
return;
}