{
TASK: ABC
LANG:PASCAL
}
program abc;
const stepen : array[1..15] of longint = (4,16,64,256,1024,4096,16384,65536,262144,1048576,4194304,16777216,67108864,268435456,1073741824);
var trg, used  : array[1..999] of string[15];
    n, i, j, p : integer;
    max        : byte;
    k          : integer;
    chis, znam : longint;
    isused     : boolean;

BEGIN
readln(n);
chis := 0;
znam := 4;
k :=0;
for i := 1 to n do
 begin
 readln(trg[i]);
 if length(trg[i]) > max then max := length(trg[i]);
 end;
for i := 1 to n do
 if length(trg[i]) = 1 then
                        begin
                         chis := chis + 1;
                         znam := stepen[1];
                         k := k + 1;
                         used[k] :=trg[i];
                        end;

for i := 1 to n do
 for j := 2 to max do
  if (length(trg[i]) = j) then
   begin
   isused := false;
   for p := 1 to k do
    if not(pos(used[p],trg[i]) = 0) then isused := true;
   if not(isused) then
                   begin
                    chis := chis*(stepen[j] div znam);
                    chis := chis + 1;
                    znam := stepen[j];
                    k := k + 1;
                    used[k] := trg[i];
                   end;
   end;
while (chis mod 2) = 0 do
 begin
  chis := chis div 2;
  znam := znam div 2;
 end;
writeln(chis,' ',znam);
END.
