{
TASK:abc
LANG:PASCAL
}
type
list = array[1..999]of string[20];
var
a:list;
step4:array[1..20]of longint;
n,i:integer;

procedure quicksort(var a: list; Lo,Hi: integer);

procedure sort(l,r: integer);
var
  i,j,x: integer;
  y:string[20];
begin
  i:=l; j:=r; x:=length(a[(l+r) DIV 2]);
  repeat
    while length(a[i])<x do i:=i+1;
    while x<length(a[j]) do j:=j-1;
    if i<=j then
    begin
      y:=a[i]; a[i]:=a[j]; a[j]:=y;
      i:=i+1; j:=j-1;
    end;
  until i>j;
  if l<j then sort(l,j);
  if i<r then sort(i,r);
end;

begin {quicksort};
  sort(Lo,Hi);
end;

procedure clear;
var
j,i:integer;
begin
for i:=1 to n-1 do
    if a[i][length(a[i])]<>'O'
    then
    for j:=i+1 to n do
        if pos(a[i],a[j])=1 then a[j]:='';
end;

function nod(a,b:longint):longint;
begin
while a<>b do
      if a>b
      then a:=a-b
      else b:=b-a;
nod:=a;
end;

procedure drobi(a,b,c,d:longint;var x,y:longint);
var t:longint;
begin
t:=nod(b,d);
y:=(b div t)*(d div t)*t;
x:=a*(y div b)+c*(y div d);
end;


procedure calc;
var
suma,sumb,s2,s1,t:longint;
begin
suma:=0;sumb:=4;
for i:=1 to n do
    begin
    if a[i]<>''
    then begin
    drobi(suma,sumb,1,step4[length(a[i])],s1,s2);
    suma:=s1;
    sumb:=s2; end;
    end;
t:=nod(suma,sumb);
suma:=suma div t;
sumb:=sumb div t;
writeln(suma,' ',sumb);
end;

begin
step4[1]:=4;
for i:=2 to 20 do step4[i]:=step4[i-1]*4;
readln(n);
for i:=1 to n do readln(a[i]);
quicksort(a,1,n);
clear;
calc;
end.