#include <iostream>
#include <vector>
#include <set>
#include <string>
using namespace std;

int n, m;
vector<vector<bool>> la;
set<pair<int, int>> wall;

bool valid(int i, int j) {
    return i >= 0 && i < n && j >= 0 && j < m && !la[i][j] && wall.find({i, j}) == wall.end();
}

void dfs(int i, int j) {
    if (!valid(i, j)) return;
    la[i][j] = true;
    dfs(i + 1, j);
    dfs(i - 1, j);
    dfs(i, j + 1);
    dfs(i, j - 1);
}

int main() {
    cin >> n >> m;

    la.resize(n, vector<bool>(m, false));
    vector<vector<int>> a(n, vector<int>(m, 0));

    string ch;
    for (int i = 0; i < n; i++) {
        cin >> ch;
        for (int j = 0; j < m; j++) {
            if (ch[j] == '#') {
                a[i][j] = 1;
                wall.insert({i, j});
            } else {
                a[i][j] = 0;
            }
        }
    }

    int nb = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (!la[i][j] && wall.find({i, j}) == wall.end()) {
                dfs(i, j);
                nb++;
            }
        }
    }

    cout << nb << endl;
    return 0;
}
