#include <iostream>

using namespace std ;
int r,s,rez[ 6 ] ;
char park[ 51 ][ 51 ] ;

bool provjeri ( int i,int j ){
	if ( park[ i ][ j ] != '\0' && park[ i ][ j ] != '#' && park[ i + 1 ][ j ] != '\0' && park[ i + 1 ][ j ] != '#' && park[ i ][ j + 1 ] != '\0' && park[ i ][ j + 1 ] != '#' && park[ i + 1 ][ j + 1 ] != '\0' && park[ i + 1 ][ j + 1 ] != '#' ) return 1 ;
	return 0 ;
}

int broj ( int i,int j ){
	int br = 0 ;
	if ( park[ i ][ j ] == 'X' ) br++ ;
	if ( park[ i + 1 ][ j ] == 'X' ) br++ ;
	if ( park[ i ][ j + 1 ] == 'X' ) br++ ;
	if ( park[ i + 1 ][ j + 1 ] == 'X' ) br++ ;
	return br ;
}

int main ( void ){
	cin >> r >> s ;
	for ( int i = 0 ; i < r ; i++ ){
		for ( int j = 0 ; j < s ; j++ ) cin >> park[ i ][ j ] ;	
	}
	for ( int i = 0 ; i < r ; i++ ){
		for ( int j = 0 ; j < s ; j++ ){
			if ( provjeri ( i,j ) == true ) rez[ broj( i,j ) ]++ ;	
		} 
	}
	cout << rez[ 0 ] << endl << rez[ 1 ] << endl << rez[ 2 ] << endl << rez[ 3 ] << endl << rez[ 4 ] << endl ;
	return 0 ;
}
