#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define sort stable_sort
#define endl '\n'
int nxt[200010],f[(1<<22)+10][22],g[22][22];
string s[22],ss[22],t;
int main()
{
int m,n=0,ans=0x7f7f7f7f,flag,i,j,k,x,y;
cin>>m;
memset(f,0x3f,sizeof(f));
for(i=0;i<=m-1;i++)
{
cin>>ss[i];
flag=0;
for(j=0;j<=n-1;j++)
{
if(s[j].find(ss[i])!=string::npos)
{
flag=1;
break;
}
}
if(flag==0)
{
s[n]=ss[i];
n++;
}
}
for(x=0;x<=n-1;x++)
{
for(y=0;y<=n-1;y++)
{
if(x!=y)
{
t=' '+s[y]+'#'+s[x];
for(i=2,nxt[1]=j=0;i<t.size();i++)
{
while(j>=1&&t[i]!=t[j+1])
{
j=nxt[j];
}
j+=(t[i]==t[j+1]);
nxt[i]=j;
}
g[x][y]=nxt[t.size()-1];
}
}
}
for(i=0;i<=n-1;i++)
{
f[(1<<i)][i]=s[i].size();
}
for(i=0;i<=(1<<n)-1;i++)
{
for(j=0;j<=n-1;j++)
{
if((i>>j)&1)
{
for(k=0;k<=n-1;k++)
{
if(j!=k&&((i>>k)&1))
{
f[i][j]=min(f[i][j],f[i-(1<<j)][k]-g[k][j]+(int)s[j].size());
}
}
}
}
}
for(i=0;i<=n-1;i++)
{
ans=min(ans,f[(1<<n)-1][i]);
}
cout<<ans<<endl;
return 0;
}