/*
TASK:ABC
LANG:C++
*/
#include <iostream>
#include <string>
using namespace std;
int a,maxlen,f[21];
long long drob[2];
char b[21][1001][21],help[2];
long long pow(int k,int m)
{
  int i;
  long long sum=k;
  for(i=1;i<m;i++)
    sum*=k;
  return sum;
}
void input()
{
  int i,l;
  char c[21];
  cin >> a;
  for(i=0;i<a;i++)
  {
    cin >> c;
    l=strlen(c);
    if(maxlen<l)maxlen=l;
    strcpy(b[l][f[l]],c);
    f[l]++;
  }
  drob[0]=0;
  drob[1]=pow(4,maxlen);
  return;
}
void count(int r, int t)
{
  drob[0]+=drob[1]/pow(4,strlen(b[r][t]));
  return;
}
void find()
{
  int i=1,j=0,p,q;
  do
  {
    j=0;
    while(j<f[i])
    {
      if(b[i][j][strlen(b[i][j])-1]!='O')
      {
	p=i+1;
	do
	{
	  q=0;
	  while(q<=f[p])
	  {
	    if(strncmp(b[i][j],b[p][q],strlen(b[i][j]))==0)strcpy(b[p][q],help);
	    q++;
	  }
	  p++;
	}while(p<=maxlen);
      }
      count(i,j);
      j++;
    }
    i++;
  }while(i<maxlen);
  return;
}
void sak()
{
  long long p=drob[0],q=drob[1];
  while(p!=q)
  {
    if(p>q)p-=q;
    else q-=p;
  }
  drob[0]/=p;
  drob[1]/=p;
}
int main()
{
  input();
  find();
  sak();
  cout << drob[0] << " " << drob[1] <<"\n";
  return 0;
}
