#include <bits/stdc++.h>

using namespace std;
string s[15];
string sol;
int n;

int Resi(int N, int K, int* L, char** A, char* S) {
    n=N;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=L[i];j++)
            s[i-1]+=A[i][j];

    //cout<<"OK";
    /*for(int i=0;i<n;i++)
        cout<<s[i].size();*/

    sort(s,s+n);


    int minsol=10000;
    string sol, tsol;

    do
    {
        tsol="";
        tsol=s[0];
        //cout<<sol<<endl;
        for(int i=1;i<n;i++)
        {
            bool ubacio=false;
            for(int j=tsol.size()-s[i].size()+1;j<tsol.size() && !ubacio;j++)
            {
                if(tsol[j]==s[i][0])
                {
                    bool ok =true;
                    int poc=j;
                    int k;
                    for(k=1;ok && k+poc<tsol.size();k++)
                        if(tsol[k+poc]!=s[i][k])
                            ok=false;
                    if(ok)
                    {
                        //cout<<"USO "<<sol<<" "<<j<<endl;
                        while(k<s[i].size())
                        {
                            tsol+=s[i][k];
                            k++;
                        }
                        ubacio=true;
                    }
                }
            }
            if(!ubacio)
                tsol+=s[i];
        }
        if(tsol.size()<minsol)
            sol=tsol, minsol=tsol.size();
        //cout<<sol<<endl;

        /*cout<<endl;
        for(int i=0;i<n;i++)
            cout<<s[i];*/
    }
    while(next_permutation(s,s+n));


    for(int i=0;i<sol.size();i++)
        S[i+1]=sol[i];

	//S[1] = 'a';
	return minsol;
}