#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int rows, columns;
int rooms[5][2];
string grid[100];
int area;
int dir[4][2] = {
    {0,-1}, {1,0}, {0,1}, {-1,0}
}; 

bool checkBounds(int x, int y){
     if (x >= 0 && x < rows && y >= 0 && y < columns)
        return true;
     return false;
} 

void findArea(int x, int y){
     int fc = 0;

     if (checkBounds(x,y) == true && grid[y][x] != '#')
        {
        area++;

        grid[y][x] = '#';
        for (fc = 0; fc < 4; ++fc){
            findArea(x + dir[fc][0], y + dir[fc][1]);
        }
        }    
}

int main()
{
    ofstream output("OUT3.txt");
    ifstream input("DATA3.txt");
    int c = 0, c2 = 0, c3 = 0;
    
    input>>columns >> rows;
    
    
    for (c = 0; c < columns; ++c){
        input>> grid[c];
        grid[c] += "\n";
    }

    


    for (c=0; c< rows;++c){
        for (c2 = 0; c2 < columns; ++c2){
            if (grid[c2][c] == '1' ||grid[c2][c] == '2' ||grid[c2][c] == '3' ||grid[c2][c] == '4' ||grid[c2][c] == '5'){
//                            cout<<int(grid[c2][c])-49<<" "<<c<<" "<<c2;cin.get();
               rooms[int(grid[c2][c])-49][0] = c;
               rooms[int(grid[c2][c])-49][1] = c2;               
            }
        }
    }
    
    for (c=0; c < 5; ++c){
        area = 0;
        findArea(rooms[c][0],rooms[c][1]);
        if (c < 4)
                output<<area<<endl;
        else
            output<<area;
    }
    
    

    
    return 0;
}

