#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int k[10001][10001];
int n,m;
int x,y,tx,ty;
int xx,yy;
int vis[10001][10001];
int ans;
char c[10001][10001];
struct node{
int x,y;
};
void bfs(int x,int y)
{
if(c[x][y]=='0'&&vis[x][y]==0) vis[x][y]=1;
else return;
queue<node>q;
q.push({x,y});
while(!q.empty())
{
xx=q.front().x;
yy=q.front().y;
for(int i=1;i<4;i++)
{
tx=xx+dx[i];
ty=yy+dy[i];
if(tx>0&&tx<=n&&ty>0&&ty<=m&&!vis[tx][ty]&&c[tx][ty]!='*')
{
vis[tx][ty]=1;
q.push({tx,ty});
bfs(tx,ty);
}
}
q.pop();
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if((i==1 || i==n) || (j==1 || j==m)) bfs(i,j);
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(vis[i][j]==0 && c[i][j]!='*')
{
ans++;
}
}
}
cout<<ans;
return 0;
}