#include <bits/stdc++.h>
using namespace std;

const int MAX=1000000007;

int main() {
  int n;
  while(cin >> n && n) {
    string t[n];
    for(int i=0; i<n; i++) cin >> t[i];
    int a[n][n];
    set<int> se;
    for(int i=0; i<n; i++) {
      for(int j=0; j<n; j++) {
	if(i==j)continue;
	for(int k=0; k<t[i].size(); k++) {
	  string x=t[i].substr(k);
	  if(x.size()>t[j].size()) {
	    x=x.substr(0,t[j].size());
	    if(x==t[j]) {
	      se.insert(j);
	      break;
	    }
	  }
	}
      }
    }
    vector<string> s;
    for(int i=0; i<n; i++) if(!se.count(i)) s.push_back(t[i]);
    n=s.size();
    for(int i=0; i<n; i++) {
      for(int j=0; j<n; j++) {
	if(i==j) a[i][j]=0;
	bool ck=true;
	for(int k=0; k<s[i].size(); k++) {
	  string x=s[i].substr(k);
	  string y=s[j].substr(0,min(s[j].size(),s[i].size()-k));
	  if(x==y) {
	    a[i][j]=k+s[j].size()-s[i].size();
	    ck=false;
	    break;
	  }
	}
	if(ck) a[i][j]=s[j].size();
      }
    }
    int dp[(1<<n)][n];
    fill(dp[0],dp[(1<<n)],MAX);
    for(int i=0; i<n; i++) dp[(1<<i)][i]=s[i].size();
    for(int t=0; t<(1<<n); t++) {
      for(int i=0; i<n; i++) {
	for(int j=0; j<n; j++) dp[t|(1<<j)][j]=min(dp[t|(1<<j)][j],dp[t][i]+a[i][j]);
      }
    }
    int ans=MAX;
    for(int i=0; i<n; i++) ans=min(ans,dp[(1<<n)-1][i]);
    cout << ans << endl;
  }
  return 0;
}
