#include<bits/stdc++.h>
using namespace std;
#define fs first
#define sc second
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define ALL(A) A.begin(),A.end()
#define RALL(A) A.rbegin(),A.rend()
typedef long long LL;
typedef pair<int,int> P;
const LL mod=998244353;
const LL LINF=1LL<<62;
const int INF=1<<20;


int main(){
    int n;
    while(cin >> n,n){
        string s[n];
        for (int i = 0; i < n; i++) {
            cin >> s[i];
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if(s[i].find(s[j])!=string::npos&&i!=j){
                    s[j]="";
                }
            }
        }
        int cost[n][n];
        memset(cost,0,sizeof(cost));
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 1; k <= s[i].length() && k <= s[j].length(); k++) {
                    for (int l = 0; l < k; l++) {
                        if(s[i][s[i].length()-k+l]!=s[j][l]) break;
                        if(l==k-1) cost[i][j]=k; 
                    }
                }
            }
        }
        int sum=0;
        for (int i = 0; i < n; i++) {
            sum+=s[i].length();
        }
        int dp[(1<<n)][n];
        memset(dp,-1,sizeof(dp));
        for (int i = 0; i < n; i++) {
            dp[1<<i][i]=0;
        }
        for (int bit = 1; bit < (1<<n); bit++) {
            for (int i = 0; i < n; i++) {
                if(dp[bit][i]==-1) continue;
                for (int j = 0; j < n; j++) {
                    if(bit&(1<<j)) continue;
                    int nx=bit|(1<<j);
                    dp[nx][j]=max(dp[nx][j],dp[bit][i]+cost[i][j]);
                }
            }
        }
        int ans=0;
        for (int i = 0; i < n; i++) {
            ans=max(ans,dp[(1<<n)-1][i]);
        }
        cout << sum-ans << endl;
    }
    return 0;
}


