#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
const int mod = 998244353;
typedef long long ll;
typedef unsigned long long ull;
const ll INF = 1e18;
int n,m;
char b[N][N];
bool vis[N][N];
ll dir[4][2] = {1,0,0,1,-1,0,0,-1};
bool ok;
ll xmn,ymn,xmx,ymx;
void dfs(ll x,ll y)
{
for(int i=0;i<=4;i++)
{
ll cx = x+dir[i][0];
ll cy = y+dir[i][1];
if(cx<=0||cy<=0||cx>n||cy>m)continue;
if(vis[cx][cy]||b[cx][cy]=='*')continue;
vis[cx][cy]=true;
xmx = max(xmx,cx);
ymx = max(ymx,cy);
xmn = min(xmn,cx);
ymn = min(ymn,cy);
dfs(cx,cy);
}
}
bool check()
{
// cout<<xmn<<' '<<ymn<<' '<<xmx<<' '<<ymx<<'\n';
for(int i=xmn;i<=xmx;i++)
{
for(int j=ymn;j<=ymx;j++)
{
if(b[i][j]=='*')return false;
}
}
return true;
}
void solve()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>b[i][j];
}
}
ll cnt = 0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(vis[i][j])continue;
if(b[i][j]=='*')continue;
vis[i][j]=true;
xmx = i,ymx =j;
xmn = i,ymn=j;
dfs(i,j);
if(check())cnt++;
}
}
cout<<cnt<<'\n';
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t=1;
while(t--)
{
solve();
}
return 0;
}