#include <iostream.h>
#include <string.h>
#define max 300

int n;

char heap[max];
struct word {
	char wrd[max];
 //	char str[max];
}ob[20];


long len();
void fnd();

int main()
{
	cin>>n;
	for(int i=0; i<n; i++)
		cin>>ob[i].wrd;


fnd();



return 0;
}

long len()
{
	long l;
	l=strlen(ob[0].wrd);
	for(int j=1; j<n; j++)
		if(l<strlen(ob[j].wrd))
		{
			l=strlen(ob[j].wrd);

		}
return l;

}

void fnd()
{
	long dul;
	long dul2;
	long dr=0,ext=1;
	for(long i=0; i<n; i++)
	{
		 dul=strlen(ob[i].wrd);
		 dul2=strlen(ob[i+1].wrd);
		 for(long j=0; j<dul; j++)
			for(long p=0;/* p<strlen(ob[i+1].wrd*/ p<dul2; p++)
				if(ob[i].wrd[j] == ob[i+1].wrd[p])
			{
			 //	long dr=0,ext=1;
				heap[dr]=ob[i].wrd[j];
				if(ob[i].wrd[j+ext]!=ob[i+1].wrd[p+ext]) return;
				else
				{
			 //		ext++;
					while(ob[i].wrd[j+ext]==ob[i+1].wrd[p+ext])
					{

						heap[dr]=ob[i].wrd[j+ext];
						dr++;
						ext++;
					}


				}



			}
			else return;

	}




}




/*
3
11111111111517561111111111
01234517566789ABCDEF
010101010105175610100101010101
*/