#include<bits/stdc++.h>
using namespace std;
#define FR0(i,N) for(i=0;i<(N);i++)
#define FR1(i,N) for(i=1;i<=(N);i++)
#define FRN(i,k,N) for(i=k;i<(N);i++)
#define pf printf
#define db double
#define max3(a,b,c) max(max(a,b),c)
#define min3(a,b,c) min(min(a,b),c)
#define sci(n) scanf("%d",&n)
#define scl(n) scanf("%lld",&n)
#define scf(n) scanf("%f",&n)
#define scd(n) scanf("%lf",&n)
#define scs(s) scanf("%s",&s)
#define scll(n) scanf("%%I64d",&n)
#define PI acos(-1.0)
#define LL long long
#define MX 1000005
#define MOD 1000000007
typedef long long int ll;
bool status[1100002];
int dr[]= {-1,-1,-1,0,0,1,1,1};
int dc[]= {-1,0,1,-1,1,-1,0,1};
queue<int>Q;
char mat[250][250];
int visit[250][250],n,m;
int BFS(int r,int c)
{
visit[r][c]=1;
Q.push(r);
Q.push(c);
int p=0,q=0;
while(!Q.empty())
{
int u=Q.front();
Q.pop();
int v=Q.front();
Q.pop();
for(int i=0; i<8; i++)
{
int row =dr[i]+u;
int col=dc[i]+v;
if(row>=1 && row<=n && col>=1 && col<=m && mat[row][col]=='*')
{
if(visit[row][col]==0)
{
visit[row][col]=1;
q++;
Q.push(row);
Q.push(col);
}
}
}
}
if(q==0)
{
p++;
}
return p;
}
int main()
{
int cnt;
while(scanf("%d%d",&n,&m))
{
if(n==0 && m==0) break;
getchar();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin>>mat[i][j];
}
}
cnt=0;
//memset(visit,0,sizeof(visit));
//memset(mat,'\0',sizeof(mat));
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(mat[i][j]=='*' && visit[i][j]==0)
{
cnt+=BFS(i,j);
}
}
}
//cout<<cnt<<endl;
pf("%d\n",cnt);
memset(visit,0,sizeof(visit));
memset(mat,'\0',sizeof(mat));
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBGUjAoaSxOKSBmb3IoaT0wO2k8KE4pO2krKykKI2RlZmluZSBGUjEoaSxOKSBmb3IoaT0xO2k8PShOKTtpKyspCiNkZWZpbmUgRlJOKGksayxOKSBmb3IoaT1rO2k8KE4pO2krKykKI2RlZmluZSBwZiBwcmludGYKI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBtYXgzKGEsYixjKSBtYXgobWF4KGEsYiksYykKI2RlZmluZSBtaW4zKGEsYixjKSBtaW4obWluKGEsYiksYykKI2RlZmluZSBzY2kobikgc2NhbmYoIiVkIiwmbikKI2RlZmluZSBzY2wobikgc2NhbmYoIiVsbGQiLCZuKQojZGVmaW5lIHNjZihuKSBzY2FuZigiJWYiLCZuKQojZGVmaW5lIHNjZChuKSBzY2FuZigiJWxmIiwmbikKI2RlZmluZSBzY3Mocykgc2NhbmYoIiVzIiwmcykKI2RlZmluZSBzY2xsKG4pIHNjYW5mKCIlJUk2NGQiLCZuKQojZGVmaW5lIFBJIGFjb3MoLTEuMCkKI2RlZmluZSBMTCBsb25nIGxvbmcKI2RlZmluZSBNWCAxMDAwMDA1CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwpib29sIHN0YXR1c1sxMTAwMDAyXTsKaW50IGRyW109IHstMSwtMSwtMSwwLDAsMSwxLDF9OwppbnQgZGNbXT0gey0xLDAsMSwtMSwxLC0xLDAsMX07CnF1ZXVlPGludD5ROwpjaGFyIG1hdFsyNTBdWzI1MF07CmludCB2aXNpdFsyNTBdWzI1MF0sbixtOwppbnQgQkZTKGludCByLGludCBjKQp7CiAgICB2aXNpdFtyXVtjXT0xOwogICAgUS5wdXNoKHIpOwogICAgUS5wdXNoKGMpOwogICAgaW50IHA9MCxxPTA7CiAgICB3aGlsZSghUS5lbXB0eSgpKQogICAgewogICAgICAgIGludCB1PVEuZnJvbnQoKTsKICAgICAgICBRLnBvcCgpOwogICAgICAgIGludCB2PVEuZnJvbnQoKTsKICAgICAgICBRLnBvcCgpOwogICAgICAgIGZvcihpbnQgaT0wOyBpPDg7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGludCByb3cgPWRyW2ldK3U7CiAgICAgICAgICAgIGludCBjb2w9ZGNbaV0rdjsKICAgICAgICAgICAgaWYocm93Pj0xICYmIHJvdzw9biAmJiBjb2w+PTEgJiYgY29sPD1tICYmIG1hdFtyb3ddW2NvbF09PScqJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYodmlzaXRbcm93XVtjb2xdPT0wKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHZpc2l0W3Jvd11bY29sXT0xOwogICAgICAgICAgICAgICAgICAgIHErKzsKICAgICAgICAgICAgICAgICAgICBRLnB1c2gocm93KTsKICAgICAgICAgICAgICAgICAgICBRLnB1c2goY29sKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKHE9PTApCiAgICB7CiAgICAgICAgcCsrOwogICAgfQogICAgcmV0dXJuIHA7Cn0KaW50IG1haW4oKQp7CiAgICBpbnQgY250OwogICAgd2hpbGUoc2NhbmYoIiVkJWQiLCZuLCZtKSkKICAgIHsKICAgICAgICBpZihuPT0wICYmIG09PTApIGJyZWFrOwogICAgICAgIGdldGNoYXIoKTsKICAgICAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTE7IGo8PW07IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2luPj5tYXRbaV1bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY250PTA7CiAgICAgICAgLy9tZW1zZXQodmlzaXQsMCxzaXplb2YodmlzaXQpKTsKICAgICAgICAvL21lbXNldChtYXQsJ1wwJyxzaXplb2YobWF0KSk7CiAgICAgICAgZm9yKGludCBpPTE7IGk8PW47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0xOyBqPD1tOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKG1hdFtpXVtqXT09JyonICYmIHZpc2l0W2ldW2pdPT0wKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNudCs9QkZTKGksaik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy9jb3V0PDxjbnQ8PGVuZGw7CiAgICAgICAgcGYoIiVkXG4iLGNudCk7CiAgICAgICAgbWVtc2V0KHZpc2l0LDAsc2l6ZW9mKHZpc2l0KSk7CiAgICAgICAgbWVtc2V0KG1hdCwnXDAnLHNpemVvZihtYXQpKTsKICAgIH0KfQo=