#include<stdio.h>
#include<string.h>
int x,y,ans,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},visit[505][505],np,nq;
char ch[505][505];
void dfs(int p,int q)
{
int i;
if(p<0||q<0||p>x+1||q>y+1||visit[p][q])//越界和已访问过
{
return;
}
visit[p][q]=1;//有洪水经过
for(i=0;i<4;i++)
{
np=p+dx[i];
nq=q+dy[i];
dfs(np,nq);
}
}
int main()
{
int i,j;
scanf("%d %d",&x,&y);
getchar();
for(i=1;i<=x;i++)
{
for(j=1;j<=y;j++)
{
scanf("%c",&ch[i][j]);
if(ch[i][j]=='*')
visit[i][j]=1;
}
getchar();
}
dfs(0,0);//从另外增加的外围圈找起,可以避免一开始搜的第一个是墙或其他特殊情况,
//而直接结束查找。增加外围一圈如果原本的最外面一层有空地的话,它就可以连着空地
//继续查找。
for(i=1;i<=x;i++)
{
for(j=1;j<=y;j++)
{
if(!visit[i][j])//查找剩下没被淹没的地区
ans++;
}
}
printf("%d\n",ans);
return 0;
}