uses crt;
var
  {loops} aa,bb,cc:longint;
  dd:char;
  {expendable} w,x,y,z,a,b,c,r,s,f:longint;
  {text} tin,tout:text;
  {specific}   destinationx,destinationy,portalx,portaly:array['A'..'J'] of longint;
  startx,starty:array['1'..'5'] of longint;
  priorityx,priorityy:array[1..100000] of longint;
  matrix:array[0..1000,0..1000] of char;
  travel:array[0..1000,0..1000] of longint;
begin
  assign(tin,'DATA5.txt');reset(tin);
  assign(tout,'OUT5.txt');rewrite(tout);
      readln(tin,r);
	  readln(tin,c);
          for bb:= 0 to 21 do begin
              for cc:= 0 to 21 do begin
                  matrix[bb,cc]:='#';
              end;
          end;
	  for bb:= 1 to r do begin
	      for cc:= 1 to c do begin
		      read(tin,matrix[bb,cc]);

			  if matrix[bb,cc] in ['A'..'J'] then begin
			     destinationx[matrix[bb,cc]]:=bb;
				 destinationy[matrix[bb,cc]]:=cc;
			  end;
			  if matrix[bb,cc] in ['1'..'5'] then begin
			     startx[matrix[bb,cc]]:=bb;
				 starty[matrix[bb,cc]]:=cc;
			  end;
		  end;
		  readln(tin);
	  end;

	  for dd:= '1' to '5' do begin
	      s:=1;
	      f:=2;
	      priorityx[s]:=startx[dd];
		  priorityy[s]:=starty[dd];
	      a:=0;
		  write(tout,dd,':');
                  for bb:= 1 to 100 do begin
                      for cc:= 1 to 100 do begin
                          travel[bb,cc]:=0;
                      end;
                  end;
	  while s <> f do begin

		   if matrix[priorityx[s],priorityy[s]] <> dd then
		   if matrix[priorityx[s],priorityy[s]] in ['1'..'5'] then
		   begin
		     inc(a);
			 write(tout,matrix[priorityx[s],priorityy[s]],' ');
		   end;

	       if matrix[priorityx[s]-1,priorityy[s]] <> '#' then
	       if travel[priorityx[s]-1,priorityy[s]] <> 1 then begin

			  priorityx[f]:= priorityx[s]-1;
			  priorityy[f]:= priorityy[s];
			  travel[priorityx[s]-1,priorityy[s]]:=1;
			  inc(f);
		      if matrix[priorityx[s]-1,priorityy[s]] in ['a'..'j'] then begin
		         travel[destinationx[upcase(matrix[priorityx[s]-1,priorityy[s]])],destinationy[upcase(matrix[priorityx[s]-1,priorityy[s]])]]:=1;
				 priorityx[f]:=destinationx[upcase(matrix[priorityx[s]-1,priorityy[s]])];
				 priorityy[f]:=destinationy[upcase(matrix[priorityx[s]-1,priorityy[s]])];
				 inc(f);
			  end;

		   end;

		   if matrix[priorityx[s]+1,priorityy[s]] <> '#' then
	       if travel[priorityx[s]+1,priorityy[s]] <> 1 then begin

			  priorityx[f]:= priorityx[s]+1;
			  priorityy[f]:= priorityy[s];
			  travel[priorityx[s]+1,priorityy[s]]:=1;
			  inc(f);
		      if matrix[priorityx[s]+1,priorityy[s]] in ['a'..'j'] then begin
		         travel[destinationx[upcase(matrix[priorityx[s]+1,priorityy[s]])],destinationy[upcase(matrix[priorityx[s]+1,priorityy[s]])]]:=1;
				 priorityx[f]:=destinationx[upcase(matrix[priorityx[s]+1,priorityy[s]])];
				 priorityy[f]:=destinationy[upcase(matrix[priorityx[s]+1,priorityy[s]])];
				 inc(f);
			  end;

		   end;

		   if matrix[priorityx[s],priorityy[s]-1] <> '#' then
	       if travel[priorityx[s],priorityy[s]-1] <> 1 then begin

			  priorityx[f]:= priorityx[s];
			  priorityy[f]:= priorityy[s]-1;
			  travel[priorityx[s],priorityy[s]-1]:=1;
			  inc(f);
		      if matrix[priorityx[s],priorityy[s]-1] in ['a'..'j'] then begin
		         travel[destinationx[upcase(matrix[priorityx[s],priorityy[s]-1])],destinationy[upcase(matrix[priorityx[s],priorityy[s]-1])]]:=1;
				 priorityx[f]:=destinationx[upcase(matrix[priorityx[s],priorityy[s]-1])];
				 priorityy[f]:=destinationy[upcase(matrix[priorityx[s],priorityy[s]-1])];
				 inc(f);
			  end;

		   end;

		   if matrix[priorityx[s],priorityy[s]+1] <> '#' then
	       if travel[priorityx[s],priorityy[s]+1] <> 1 then begin

			  priorityx[f]:= priorityx[s];
			  priorityy[f]:= priorityy[s]+1;
			  travel[priorityx[s],priorityy[s]+1]:=1;
			  inc(f);
		      if matrix[priorityx[s],priorityy[s]+1] in ['a'..'j'] then begin
		         travel[destinationx[upcase(matrix[priorityx[s],priorityy[s]+1])],destinationy[upcase(matrix[priorityx[s],priorityy[s]+1])]]:=1;
				 priorityx[f]:=destinationx[upcase(matrix[priorityx[s],priorityy[s]+1])];
				 priorityy[f]:=destinationy[upcase(matrix[priorityx[s],priorityy[s]+1])];
				 inc(f);
			  end;

		   end;
	       inc(s);
	  end;
	      writeln(tout);
	  end;

  close(tin);
  close(tout);
end.
