Language: C++

/*
???????°??????°?????????????????????????????´????????´?????????????????¨??????????????????
???????????°?????????dp[2n][n]???????¬???????????????¨??????????????? 2 ?¬??????????????°????????????????
*/
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>
#include <bitset>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
#define rep(i,n) for(ll i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)

const int MAX_N = 15;
const int INF = 1e9;


int cost[MAX_N][MAX_N];//cost[i][j] := (?????????j????????????i?????????????????¨????????????????????????)
//?????????j????????????i??????????????????????????§???????????????????????????????????????i?????????????????????
int dp[1<<MAX_N][MAX_N];

//?????????a????????????b???????????????????????????????????????????????´????????¨???????????????????±?????????¢??°
int getcost(string a, string b){
	int res = INF;
	//?????????a??????????????????(???????????????)????????????b????????????(??????????????????)????????¨??§????????????????????????????¨????
	for (int i = a.size() - 1, st = 0; i >= 0 && st < b.size(); --i, ++st){
		string ca = a.substr(i, a.size() - i);//?????????a???i????????????????????§
		string cb = b.substr(0, st + 1);//?????????b???0???????????????st+1?????????
		if(ca == cb) res = st + 1;
	}
	return res;
}

int main(void){
	int n;
	while(1){
		cin >> n;
		if(n == 0) return 0;
		vector<string> tmp(n);
		vector<string> name;
		rep(i, n) cin >> tmp[i];

		rep(i, n){
			bool flag = false;
			rep(j, n){
				if(i == j) continue;
				//?????????tmp[j]?????????????????????tmp[i]?????????????????????????????????????????????
				if(tmp[j].find(tmp[i]) != string::npos){
					flag = true;//????????????????????????????????¨?????????
					break;
				}
			}
			//?????????tmp[i]????????????????????????????????¨???????????????????????§???dp????????§???????????????name?????\??????
			if(flag == false) name.push_back(tmp[i]);
		}
		n = name.size();//?????????dp????????§????????°

		rep(i, MAX_N)rep(j, MAX_N) cost[i][j] = INF;
		//?????????[i]?????????????????????[j]??????????????????cost????¨????
		rep(i, n){
			rep(j, n){
				if(i ==	j){
					cost[i][j] = name[i].size();
					continue;
				}
				int ct = getcost(name[i], name[j]);
				if(ct == INF) cost[i][j] = name[j].size();//???????????¨????????????
				else cost[i][j] = name[j].size() - ct;
			}
		}

		rep(i, 1<<MAX_N)rep(j, MAX_N) dp[i][j] = INF;//????°?????????¢????????§??????????????§??????????????§
		rep(i, n) dp[1<<i][i] = name[i].size();//?????????????????????????????????

		//bitDp????????£????§£???
		//dp[1<<n][i] ??¶??????1<<n?????§?????¨?????????i???????????????????°???????????????¨??????
		rep(S, (1<<n)){
			rep(mae, n){//?????´?????????
				if(!(S>>mae) & 1) continue;//?????´??????????????????
				rep(usiro, n){
					if((S>>usiro) & 1) continue;//????????´????????????????????§????????????????????¨??????
					//??????????¨??????¨???
					dp[S|(1<<usiro)][usiro] = min(dp[S|(1<<usiro)][usiro], dp[S][mae] + cost[mae][usiro]);
				}
			}
		}
		int ans = INF;
		rep(i, n) ans = min(ans, dp[(1<<n) - 1][i]);

		printf("%d\n", ans);
	}
	return 0;
}
	

Compiler output:
a.cc: In function 'int main()':
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:46:17: note: in expansion of macro 'rep'
   46 |                 rep(i, n) cin >> tmp[i];
      |                 ^~~
a.cc:46:21: error: 'i' was not declared in this scope
   46 |                 rep(i, n) cin >> tmp[i];
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:48:17: note: in expansion of macro 'rep'
   48 |                 rep(i, n){
      |                 ^~~
a.cc:48:21: error: 'i' was not declared in this scope
   48 |                 rep(i, n){
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:50:29: error: expected ';' before 'j'
   50 |                         rep(j, n){
      |                             ^
a.cc:16:25: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                         ^
a.cc:50:29: error: 'j' was not declared in this scope
   50 |                         rep(j, n){
      |                             ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:63:17: note: in expansion of macro 'rep'
   63 |                 rep(i, MAX_N)rep(j, MAX_N) cost[i][j] = INF;
      |                 ^~~
a.cc:63:21: error: 'i' was not declared in this scope
   63 |                 rep(i, MAX_N)rep(j, MAX_N) cost[i][j] = INF;
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:63:34: error: expected ';' before 'j'
   63 |                 rep(i, MAX_N)rep(j, MAX_N) cost[i][j] = INF;
      |                                  ^
a.cc:16:25: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                         ^
a.cc:63:34: error: 'j' was not declared in this scope
   63 |                 rep(i, MAX_N)rep(j, MAX_N) cost[i][j] = INF;
      |                                  ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:65:17: note: in expansion of macro 'rep'
   65 |                 rep(i, n){
      |                 ^~~
a.cc:65:21: error: 'i' was not declared in this scope
   65 |                 rep(i, n){
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:66:29: error: expected ';' before 'j'
   66 |                         rep(j, n){
      |                             ^
a.cc:16:25: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                         ^
a.cc:66:29: error: 'j' was not declared in this scope
   66 |                         rep(j, n){
      |                             ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:77:17: note: in expansion of macro 'rep'
   77 |                 rep(i, 1<<MAX_N)rep(j, MAX_N) dp[i][j] = INF;//????°?????????¢????????§??????????????§??????????????§
      |                 ^~~
a.cc:77:21: error: 'i' was not declared in this scope
   77 |                 rep(i, 1<<MAX_N)rep(j, MAX_N) dp[i][j] = INF;//????°?????????¢????????§??????????????§??????????????§
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:77:37: error: expected ';' before 'j'
   77 |                 rep(i, 1<<MAX_N)rep(j, MAX_N) dp[i][j] = INF;//????°?????????¢????????§??????????????§??????????????§
      |                                     ^
a.cc:16:25: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                         ^
a.cc:77:37: error: 'j' was not declared in this scope
   77 |                 rep(i, 1<<MAX_N)rep(j, MAX_N) dp[i][j] = INF;//????°?????????¢????????§??????????????§??????????????§
      |                                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:78:17: note: in expansion of macro 'rep'
   78 |                 rep(i, n) dp[1<<i][i] = name[i].size();//?????????????????????????????????
      |                 ^~~
a.cc:78:21: error: 'i' was not declared in this scope
   78 |                 rep(i, n) dp[1<<i][i] = name[i].size();//?????????????????????????????????
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:82:17: note: in expansion of macro 'rep'
   82 |                 rep(S, (1<<n)){
      |                 ^~~
a.cc:82:21: error: 'S' was not declared in this scope
   82 |                 rep(S, (1<<n)){
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:83:29: error: expected ';' before 'mae'
   83 |                         rep(mae, n){//?????´?????????
      |                             ^~~
a.cc:16:25: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                         ^
a.cc:83:29: error: 'mae' was not declared in this scope
   83 |                         rep(mae, n){//?????´?????????
      |                             ^~~
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:85:37: error: expected ';' before 'usiro'
   85 |                                 rep(usiro, n){
      |                                     ^~~~~
a.cc:16:25: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                         ^
a.cc:85:37: error: 'usiro' was not declared in this scope
   85 |                                 rep(usiro, n){
      |                                     ^~~~~
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^
a.cc:16:22: error: 'll' was not declared in this scope
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                      ^~
a.cc:93:17: note: in expansion of macro 'rep'
   93 |                 rep(i, n) ans = min(ans, dp[(1<<n) - 1][i]);
      |                 ^~~
a.cc:93:21: error: 'i' was not declared in this scope
   93 |                 rep(i, n) ans = min(ans, dp[(1<<n) - 1][i]);
      |                     ^
a.cc:16:29: note: in definition of macro 'rep'
   16 | #define rep(i,n) for(ll i=0;i<(n);i++)
      |                             ^