#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

char map[20][20];
bool used[20][20];
int r, c, pos[6][6];

void flood (int x, int y, int n){
	int i, a;
	used[x][y]=true;
	if (int(map[x][y])>=49 && int(map[x][y])<=53){
		pos[n][int(map[x][y])-48]=1;
	}
	
	if (int(map[x][y])>=97 && int(map[x][y])<=122){
		for (i=0; i<r; ++i){
			for (a=0; a<r; ++a){
				if (int(map[i][a])+32==int(map[i][a])){
					flood(i,a,n);
					break;
				}
			}
			if (int(map[i][a])+32==int(map[i][a])){
				break;
			}
		}
	}
	if (y+1<c && map[x][y+1]!='#' && used[x][y+1]==false){
		flood(x,y+1,n);
	}
	if (x+1<r && map[x+1][y]!='#' && used[x+1][y]==false){
		flood(x+1,y,n);
	}
	if (y-1>=0 && map[x][y-1]!='#' && used[x][y-1]==false){
		flood(x,y-1,n);
	}
	if (y-1>=0 && map[x-1][y]!='#' && used[x-1][y]==false){
		flood(x-1,y,n);
	}
	
	return;
}

int main (){
	freopen ("data5.txt", "r", stdin);
	freopen ("out5.txt", "w", stdout);
	int z, i, a;
	cin >> r >> c;
	
	for (z=0; z<5; ++z){
		for (i=0; i<6; ++i){
			for (a=0; a<6; ++a){
				pos[i][a]=-1;
			}
		}
		for (i=0; i<r; ++i){
			for (a=0; a<c; ++a){
				cin >> map[i][a];
			}
		}
	/*
		for (i=0; i<20; ++i){
			for (a=0; a<20; ++a){
				used[i][a]=false;
			}
		}
		
		for (i=0; i<r; ++i){
			for (a=0; a<c; ++a){
				if (int(map[i][a])==49){
					flood(i, a, 1);
				}
			}
		}
		for (i=0; i<20; ++i){
			for (a=0; a<20; ++a){
				cout << used[i][a] << " ";
				used[i][a]=false;
			}
			cout << endl;
		}
		for (i=0; i<r; ++i){
			for (a=0; a<c; ++a){
				if (int(map[i][a])==50){
					flood(i, a, 2);
				}
			}
		}
		for (i=0; i<20; ++i){
			for (a=0; a<20; ++a){
				used[i][a]=false;
			}
		}
		for (i=0; i<r; ++i){
			for (a=0; a<c; ++a){
				if (int(map[i][a])==51){
					flood(i, a, 3);
				}
			}
		}
		for (i=0; i<20; ++i){
			for (a=0; a<20; ++a){
				used[i][a]=false;
			}
		}
		for (i=0; i<r; ++i){
			for (a=0; a<c; ++a){
				if (int(map[i][a])==52){
					flood(i, a, 4);
				}
			}
		}
		for (i=0; i<20; ++i){
			for (a=0; a<20; ++a){
				used[i][a]=false;
			}
		}
		for (i=0; i<r; ++i){
			for (a=0; a<c; ++a){
				if (int(map[i][a])==53){
					flood(i, a, 5);
				}
			}
		}*/
		
		for (i=1; i<6; ++i){
			cout << i << ":";
			for (a=1; a<6; ++a){
				if (pos[i][a]==1){
					cout << a << " ";
				}
			}
			cout << endl;
		}
	}
	
	return 0;
} 
	

