/*
TASK:abc
LANG:C
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

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

int main()
{
  char a[1000][22];
  int n, i, b[1000]={0}, f, k, j;
  long long ch=0, zn=0, ch1, zn1;
  long long c[41]={1, 2, 4, 8, 16, 32, 64, 128, 56, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 54288, 1048576, 2097152, 4191304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, 1099511627776};
  scanf("%d", &n);
  for(i=0; i<n; i++)
  {
    scanf("%s", &a[i]);
  }
  qsort((void *)a, n, sizeof(a[0]), sort_function);
  k=0;
  b[0]=strlen(a[0]);
  ch=1;
  zn=c[b[k]*2];
  for(i=1; i<n; i++)
  {
    b[i]=strlen(a[i]);
    if(b[k]<b[i])
    {
      f=0;
      for(j=0; j<b[k]; j++)
      {
	if(a[k][j]!=a[i][j]) {f=1; break;}
      }
      if(f==1)
      {
	k=i;
	ch1=1;
	zn1=c[b[k]*2];
	if(zn<zn1)
	{
	  while(zn<zn1)
	  {
	    zn*=2;
	    ch*=2;
	  }
	  ch+=ch1;
	}
	else if(zn>zn1)
	{
	  while(zn>zn1)
	  {
	    zn1*=2;
	    ch1*=2;
	  }
	  ch+=ch1;
	}
	else
	{
	  ch+=ch1;
	  while(ch%2==0)
	  {
	    ch/=2;
	    zn/=2;
	  }
	}
      }
    }
    else
    {
      k=i;
      ch1=1;
      zn1=c[b[k]*2];
      if(zn<zn1)
      {
	while(zn<zn1)
	{
	  zn*=2;
	  ch*=2;
	}
	ch+=ch1;
      }
      else if(zn>zn1)
      {
	while(zn>zn1)
	{
	  zn1*=2;
	  ch1*=2;
	}
	ch+=ch1;
      }
      else
      {
	ch+=ch1;
	while(ch%2==0)
	{
	  ch/=2;
	  zn/=2;
	}
      }
    }
  }
  printf("%ld %ld\n", ch, zn);
  return 0;
}
