/*
TASK:abc
LANG:C++
*/
#include<iostream.h>
#include<string.h>
int n;
char a[1024][64];
bool used[1024];//pri triygylnik, koito ne se smqta used[i]=true;
unsigned long c=0, z=1;
void read()
{
	cin>>n;
	cin.getline(a[0],63);
	for(int i=0;i<=n-1;i++)
		cin.getline(a[i], 63);
}
unsigned long power(unsigned long q)
{
	unsigned long p=1;
	for(int i=0;i<=q-1;i++)
		p*=4;
	return p;
}
void compare(int p, int q)
{
	if(strlen(a[p])>strlen(a[q]))
	{
		int x=p;
		p=q;
		q=x;
	}
	//a[p] e po-malkiq niz
	bool fl=true;
	for(int i=0;i<=strlen(a[p])-1;i++)
		if(a[p][i]!=a[q][i])
			fl=false;
	if(fl)
		used[q]=true;
}
void check()
{
	for(int i=0;i<=n-1;i++)
	{
		for(int j=i+1;j<=n-1;j++)
			compare(i, j);
	}
}
void sum()
{
	for(int i=0;i<=n-1;i++)
		if(used[i]==false)
		{
			unsigned long cr=1;
			unsigned long zr=1;
			zr=power(strlen(a[i]));
			c=zr*c+z*cr;
			z*=zr;
		}
}
unsigned long gcd()
{
	unsigned long x=c;
	unsigned long y=z;
	while(x!=y)
		if(x>y)
			x-=y;
		else
			y-=x;
	return x;
}
int main()
{
	read();
	check();
	sum();
	unsigned long g=gcd();
	c/=g;
	z/=g;
	cout<<c<<" "<<z<<endl;
//	for(int i=0;i<=n-1;i++)
//		cout<<used[i]<<" ";
//	cout<<endl;
	return 0;
}