{
TASK:abc
LANG:PASCAL
}

type khn= record
     s:string[21];
     l:byte;
end;

var a:array[1..1000] of khn;
    n,i,j:word;
    x,y:longint;
    t:khn;

function calc(p:word):longint;
var i:word;
    r:longint;
begin
     r:=1;
     for i:=1 to p do r:=r*4;
     calc:=r;
end;

procedure sakr;
var pp,i:longint;
begin
     pp:=x;
     for i:=2 to pp do
         while ((x mod i)=0) and ((y mod i)=0) do begin
               x:=x div i; y:=y div i;
         end;
end;

procedure sbor(xx,yy:longint; var x,y:longint);
var yyy:longint;
begin
     if (x=0) and (y=0)
        then begin x:=xx; y:=yy; end
        else begin
             yyy:=yy;
             xx:=xx*y; yy:=yy*y;
             x:=x*yyy; y:=y*yyy;
             x:=x+xx;
             sakr;
        end;
end;


begin
     x:=0; y:=0;
     readln(n);
     for i:=1 to n do begin
         readln(A[i].s);
         A[i].l:=length(A[i].s);
     end;

     for i:=1 to (n-1) do
         for j:=1 to (n-i) do
             if A[j].l>A[j+1].l
                then begin
                     t:=A[j]; A[j]:=A[j+1]; A[j+1]:=t;
                end;

     {for i:=1 to n do writeln(A[i].s);}

     for i:=1 to (n-1) do begin
         if A[i].l>0 then begin
            sbor(1,calc(A[i].l),x,y);
            for j:=(i+1) to n do begin
             if (A[j].l>0) and (pos(A[i].s,A[j].s)=1) then A[j].l:=0;
            end;
         end;
     end;

     write(x,' ',y);
end.

