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

#include <iostream>
#include <string>
using namespace std;

int n,kmax;
int num[32];


struct tri
{
	char mas[32];
	int k;
	int t;
}tr[1000];

char ch[32];

void read()
{ 
	tri hlp;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>tr[i].mas;
		tr[i].k=strlen(tr[i].mas);
		tr[i].t=1;
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			if(tr[j].k>tr[j+1].k)
			{
				hlp=tr[j];
				tr[j]=tr[j+1];
				tr[j+1]=hlp;
			}
		}
	}
}

void solve()
{
	for(int i=0;i<n;i++)
	{
		if(tr[i].t==1)
		{
			for(int j=i+1;j<n;j++)
			{
				if(strncmp(tr[i].mas,tr[j].mas,tr[i].k)==0)
				{
					tr[j].t=0;
				}
			}
		}
	}
}

char st[32][32];

void init()
{
	int seg=0,ost=0;
	st[0][0]='1';
	st[1][0]='4';
	for(int i=2;i<21;i++)
	{
		seg=0;
		ost=0;
		int j;
		for(j=0;j<strlen(st[i-1]);j++)
		{
			seg=ost+4*(st[i-1][j]-'0');
			st[i][j]=seg%10+'0';
			ost=seg/10;
		}
		if(ost)
		{
			st[i][j]=ost+'0';
		}
	}
}

void print()
{
	while(ch[0]%2==0)
	{
		int seg;
		int ost=0;
		for(int i=strlen(ch)-1;i>=0;i--)
		{
			seg=(ch[i]-'0'+10*ost)/2;
			ost=(ch[i]-'0'+10*ost)%2;
			ch[i]=seg+'0';
		}
		ost=0;
		for(int i=strlen(st[kmax])-1;i>=0;i--)
		{
			seg=(st[kmax][i]-'0'+10*ost)/2;
			ost=(st[kmax][i]-'0'+10*ost)%2;
			st[kmax][i]=seg+'0';
		}
	}
	for(int i=strlen(ch)-1;i>=0;i--)
	{
		cout<<ch[i];
	}
	cout<<' ';
	for(int i=strlen(st[kmax])-1;i>=0;i--)
	{
		cout<<st[kmax][i];
	}
	cout<<endl;
}

int main()
{
	read();
	solve();
	for(int i=0;i<n;i++)
	{
		if(tr[i].t==1) 
		{
			num[tr[i].k]++;
			if(tr[i].k>kmax) kmax=tr[i].k;
		}
	}
	init();
	int seg,ost;
	for(int i=1;i<21;i++)
	{
		ost=0;
		seg=0;
		if(num[i]>0)
		{
			int j;
			for(j=0;j<strlen(st[kmax-i]);j++)
			{
				seg=ost+(st[kmax-i][j]-'0')*num[i];
				seg=seg+ch[j];
				ch[j]=seg%10;
				ost=seg/10;
			}
			while(ost)
			{
				int pom=ch[j]+ost%10;
				ch[j]=(ch[j]+ost%10)%10;
				j++;
				ost=pom/10;
			}
		}
	}
	int p1;
	for(p1=20;ch[p1]==0;p1--);
	for(int i=0;i<=p1;i++)
	{
		ch[i]=ch[i]+'0';
	}
	print();
	return 0;
}
