#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char dp[1<<15][14][281],tmp[281],S[14][30];
int N,i,j,k,res;

int min(int a,int b){return a>b?b:a;}

void marge(char *a,char *b)
{
	int i,j,t,l1=strlen(a),l2=strlen(b);
	for(t=0;t<l1;t++)
	{
		for(i=t,j=0;i<l2&&j<l2;i++,j++)
			if(a[i]!=b[j])break;
		if(i==l1||j==l2)
		{
			if(t+l1<l2)return;
			strcpy(a+t,b);
			return;
		}
	}
	strcat(a,b);
}

int main()
{
	for(;scanf("%d\n",&N),N;)
	{
		res=9999;
		for(i=1;i<(1<<N);i++)
			for(j=0;j<N;j++)
				for(k=0;k<300;k++)
					dp[i][j][k]='a';
		for(i=0;i<N;i++)
			gets(S[i]);
		for(i=0;i<1<<N;i++)
		{
			for(j=0;j<N;j++)//now
			{
				for(k=0;k<N;k++)//next
					if((i>>k)&1)
					{
						strcpy(tmp,dp[i&(~(1<<k))][k]);
						marge(tmp,S[k]);
						if(strlen(tmp)<strlen(dp[i][j]))
							strcpy(dp[i][j],tmp);
					}
			}
		}
		for(i=0;i<N;i++)
			res=min(strlen(dp[(1<<N)-1][i]),res);
		printf("%d\n",res);
	}
}