/*
TASK: abc
LANG:C++
*/

#include<iostream>


using namespace std;

int sortf(const void *a, const void *b);

int main()
{
 long n,len[21]={0},rez=0;
 char a[1000][21]={0};
// unsigned long poww[21]={1,4,16,64,256,1024,4096,16384,65536,262144,1048576,4194304,16777216,67108864,268435456,1073741824,4294967296,17179869184,68719476736};
   
 cin>>n;
 for(int i=0;i<n;i++)
  {
   cin>>a[i]; 
  }
  
 qsort((void *)a,n,sizeof(a[0]),sortf);   
 
 for(int i=0;i<n;i++)
  { 
   len[i]=strlen(a[i]);
  }    
 
 
 int p=n-1;
 for(int i=0;i<p;i++)
  { if(len[i]==0) continue;
   for(int k=i+1;k<n;k++)
    { int fl=1;
     for(int j=0;j<len[i];j++)
      {
       if(a[i][j]!=a[k][j]) { fl=0; break; }
      }
     if(fl) { strcpy(a[k],""); len[k]=0;} 
    }
   }
  
    
  int max=0;
  for(int i=0;i<n;i++)
  { 
   if(len[i]>max) max=len[i];
  }   
  int tmp;
 for(int i=0;i<n;i++)
  {
   if(len[i]!=0)
    {
     tmp=max-len[i]; int t=1;
     
    while(tmp)
      {
       t=t*4; tmp--;
      } 
     rez+=t;
    }
  }
  
  int zn=1;
  while(max)
   {
    zn=zn*4; max--;
   }
   
   tmp=zn/2;
  for(int i=2;i<=tmp && rez!=1;i++)
   {
    while(rez%i==0 && zn%i==0) { rez=rez/i; zn=zn/i; }
   } 
   
  cout<<rez<<" "<<zn<<endl;
  
return 0;
}

 int sortf(const void *a, const void *b)
  {
   return strcmp((char *)a,(char*)b);
  }
