/*
TASK: abc
LANG: C++
*/
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
using namespace std;
    int n,len;
    char s[1024][32];
    int mas[128];
    long long used[128],x,y=1;
int cmp(const void *a,const void *b)
{
if(strlen((char *)a)>strlen((char *)b))return 0;
else return 1;
}
long long nod(long long i,long long j)
{
    while(i&&j)
    {
      if(i>j)i%=j;
      else j%=i;
    }
    if(i)return i;
    else return j;
}
long long power(int l)
{
     long long s=4;
     int i;
     if(l==0)return 1;
     for(i=1;i<l;i++)s*=4;
return s;
}
int main()
{
    int i,j;
    scanf("%d",&n);
    for(i=0;i<n;i++)cin>>s[i];
    qsort(s,n,sizeof(s[0]),cmp);
    for(i=0;i<n;i++)
    {
     int fl=0,n1,n2;
     n1=strlen(s[i]);
     for(j=i+1;j<n;j++)
      {
         n2=strlen(s[j]);
         if(strncmp(s[i],s[j],n2)==0){fl=1;break;}
      }
      if(fl==0)
      {
         if(!used[n1])mas[len++]=n1;
         used[n1]++;
      }
    }
    int o;
    for(o=0;o<len;o++)
    {
       long long Nok,NOD,tmp,chis;
       tmp=power(mas[o]);
       chis=used[mas[o]];
       NOD=nod(tmp,chis);
       chis/=NOD;
       tmp/=NOD;
       NOD=nod(y,tmp);
       Nok=(y*tmp)/NOD;
       x=(Nok/y)*x+(Nok/tmp)*chis;
       y=Nok;
       NOD=nod(x,y);
       x/=NOD;
       y/=NOD;
    }
    printf("%lld %lld\n",x,y);
return 0;
}

