#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
#include <set>
#include <climits>
#include <algorithm>
#include <map>
using namespace std;

int n, m;
char a[1001][1001];

bool visited[1001][1001];
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };

const int MOD = (int)(1e9 + 7);

void dfs(int x, int y, int& area) {
    visited[x][y] = 1;
    area++;
    for (int i = 0;i < 4;i++) {
        int nx = x + dx[i];
        int ny = y + dy[i];

        if (nx >= 0 && nx < n && ny >= 0 && ny < m && !visited[nx][ny] && a[nx][ny] == '*') {
            dfs(nx, ny, area);
        }
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    cin >> n >> m;

    multiset<int> se;

    for (int i = 0;i < n;i++) {
        for (int j = 0;j < m;j++) {
            cin >> a[i][j];
        }
    }

    for (int i = 0;i < n;i++) {
        for (int j = 0;j < m;j++) {
            if (a[i][j] == '*' && !visited[i][j]) {
                int area = 0;
                dfs(i, j, area);
                se.insert(area);
            }
        }
    }
    for (auto value : se) {
        cout << value << " ";
    }
    return 0;
}
