var v:array[0..400,0..400] of char; tip,max,i,n,m,j:integer; a:char; procedure brodare; var i,j:integer; begin for i:=0 to m+1 do begin v[i,0]:='0'; v[i,n+1]:='0'; end; for j:=0 to n+1 do begin v[0,j]:='0'; v[m+1,j]:='0'; end; end; function nothing (x,y:integer; c:char):boolean; begin if ((v[x+1,y]<>c) and (v[x-1,y]<>c) and (v[x,y+1]<>c) and (v[x,y-1]<>c)) then nothing:=true else nothing:=false; end; procedure citire; var i,j:integer; f:text; begin readln(tip); readln(m,n); for i:=1 to m do begin for j:=1 to n do read(v[i,j]); readln; end; end; { procedure afisare; var i,j:integer; begin for i:=1 to m do begin for j:=1 to n do write(v[i,j]:3); writeln; end; end; } function valid (x,y:integer):boolean; begin if (x in [1..m]) and (y in [1..n]) then valid:=true else valid:=false; end; procedure bak (x,y,nr:integer; c:char); var l:char; begin if v[x,y]=c then begin l:=v[x,y]; v[x,y]:=upcase(v[x,y]); if nothing(x,y,l) then begin if nr>max then begin max:=nr; a:=v[x,y]; end; end else begin if valid(x+1,y) then bak(x+1,y,nr+1,c); if valid(x-1,y) then bak(x-1,y,nr+1,c); if valid(x,y+1) then bak(x,y+1,nr+1,c); if valid(x,y-1) then bak(x,y-1,nr+1,c); end; v[x,y]:=l; end; end; begin citire; max:=0; brodare; for i:=1 to m do begin for j:=1 to n do if not(v[i,j] in ['A'..'Z']) then bak(i,j,1,v[i,j]); end; writeln(max,'',a); end.