#include <bits/stdc++.h>
#define endl cout<<"\n";
#define fi first
#define int long long
#define se second
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define op freopen
#define TXT "test"
#define freo if(fopen(TXT".inp","r")){op(TXT".inp","r",stdin);op(TXT".out","w",stdout);}
using namespace std;
int n,m;
bool x[1005][1005],vs[1005][1005];
char ch[1005][1005];
vector<pair<int,int>> a[1005][1005];
queue<pair<int,int>>tr;
void bfs(pair<int,int> i)
{
vs[i.fi][i.se]=1;
for(pair<int,int> &j:a[i.fi][i.se])
{
if(!vs[j.fi][j.se])
{
bfs(j);
}
}
}
main()
{
ios;
freo;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>ch[i][j];
if(ch[i][j]=='#')
{
x[i][j]=1;
}
else
{
x[i][j]=0;
tr.push({i,j});
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(!x[i][j]&&!x[i][j+1])
{
a[i][j].push_back({i,j+1});
a[i][j+1].push_back({i,j});
}
if(!x[i][j]&&!x[i+1][j])
{
a[i][j].push_back({i+1,j});
a[i+1][j].push_back({i,j});
}
if(!x[i][j]&&!x[i][j-1])
{
a[i][j].push_back({i,j-1});
a[i][j-1].push_back({i,j});
}
if(!x[i][j]&&!x[i-1][j])
{
a[i][j].push_back({i-1,j});
a[i-1][j].push_back({i,j});
}
}
}
int dem=0;
pair<int,int> c;
while(!tr.empty())
{
c=tr.front();
tr.pop();
if(!vs[c.fi][c.se])
{
dem++;
bfs(c);
}
}
cout<<dem;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZW5kbCBjb3V0PDwiXG4iOwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGlvcyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgb3AgZnJlb3BlbgojZGVmaW5lIFRYVCAidGVzdCIKI2RlZmluZSBmcmVvIGlmKGZvcGVuKFRYVCIuaW5wIiwiciIpKXtvcChUWFQiLmlucCIsInIiLHN0ZGluKTtvcChUWFQiLm91dCIsInciLHN0ZG91dCk7fQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sbTsKYm9vbCB4WzEwMDVdWzEwMDVdLHZzWzEwMDVdWzEwMDVdOwpjaGFyIGNoWzEwMDVdWzEwMDVdOwp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gYVsxMDA1XVsxMDA1XTsKcXVldWU8cGFpcjxpbnQsaW50Pj50cjsKdm9pZCBiZnMocGFpcjxpbnQsaW50PiBpKQp7CiAgICB2c1tpLmZpXVtpLnNlXT0xOwogICAgZm9yKHBhaXI8aW50LGludD4gJmo6YVtpLmZpXVtpLnNlXSkKICAgIHsKICAgICAgICBpZighdnNbai5maV1bai5zZV0pCiAgICAgICAgewogICAgICAgICAgICBiZnMoaik7CiAgICAgICAgfQogICAgfQp9Cm1haW4oKQp7CiAgICBpb3M7CiAgICBmcmVvOwogICAgY2luPj5uPj5tOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTE7ajw9bTtqKyspCiAgICAgICAgewogICAgICAgICAgICBjaW4+PmNoW2ldW2pdOwogICAgICAgICAgICBpZihjaFtpXVtqXT09JyMnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4W2ldW2pdPTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4W2ldW2pdPTA7CiAgICAgICAgICAgICAgICB0ci5wdXNoKHtpLGp9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj0xO2o8PW07aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2ldW2orMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpLGorMX0pOwogICAgICAgICAgICAgICAgYVtpXVtqKzFdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2krMV1bal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpKzEsan0pOwogICAgICAgICAgICAgICAgYVtpKzFdW2pdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2ldW2otMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpLGotMX0pOwogICAgICAgICAgICAgICAgYVtpXVtqLTFdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2ktMV1bal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpLTEsan0pOwogICAgICAgICAgICAgICAgYVtpLTFdW2pdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbnQgZGVtPTA7CiAgICBwYWlyPGludCxpbnQ+IGM7CiAgICB3aGlsZSghdHIuZW1wdHkoKSkKICAgIHsKICAgICAgICBjPXRyLmZyb250KCk7CiAgICAgICAgdHIucG9wKCk7CiAgICAgICAgaWYoIXZzW2MuZmldW2Muc2VdKQogICAgICAgIHsKICAgICAgICAgICAgZGVtKys7CiAgICAgICAgICAgIGJmcyhjKTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxkZW07Cn0K