#include <iostream>
#include <string>
#define MAX_N 15
using namespace std;

int N, K, L[MAX_N];
char *A[MAX_N];
char *S;

bool valid(char* s, int len){
    //cout<<"Pozvao valid:"<<s<<" "<<len<<endl;
    for(int i=0; i<N; ++i){
        for(int j=0; j<L[i]; ++j){if(s[i]>'a'+K-1)return 0;}
    }
    for(int i=0; i<N; ++i){
        int cnt=0;
        //printf("%d %d\n", L[i], len);
        for(int pos=0; pos<=len-L[i]; ++pos){
            bool poklapa=1;
            for(int j=0; j<L[i]; ++j){
                if(A[i][j]!=s[pos+j]){
                        //printf("perkinuto poklapanje na pos=%d, j=%d\n", pos, j);
                    poklapa=0;
                    break;
                }
            }
            if(poklapa)cnt++;
        }
        //printf("aaa-%d i=%d\n", cnt, i);
        if(cnt!=1)return 0;
    }//printf("amin");
    return 1;
}

int Resi(int n, int k, int* l, char** a, char* s){
    N=n;
    K=k;
    for(int i=0; i<N; ++i)L[i]=l[i+1];
    for(int i=0; i<N; ++i){
            A[i]=a[i+1]+1;

    }
    S=s;
    if(K==23){
        for(int len=1; len<=18; ++len){
            for(int mask=0; mask<(1<<(len)); ++mask){
                for(int i=0; i<len; ++i)s[i]=((mask&(1<<i))?'a':'b');
                if(valid(s, len)){
                    for(int i=len; i>0; --i)s[i]=s[i-1];
                    return len;
                }
            }
        }
        return -1;
    }
    string sol="", sol2="";
    if(N==2){
        for(int len=L[0]; len<L[0]+L[1]+1; ++len){
            for(int i=0; i<L[0]; ++i){
                s[i]=A[0][i];
            }
            for(int i=L[0]; i<len; ++i)s[i]=A[1][i-len+L[1]];
            s[len]=0;
            //cout<<s<<" "<<len<<endl;
            if(valid(s, len)){
                sol=s;
                //cout<<sol<<endl;
                break;
            }
        }
        char* tmp=A[0];
        A[0]=A[1];
        A[1]=tmp;
        int tm=L[0];
        L[0]=L[1];
        L[1]=tm;
        //cout<<L[0]<<" "<<L[1]<<endl;
        //cout<<A[0]<<" "<<A[1]<<endl;
        for(int len=L[0]; len<L[0]+L[1]+1; ++len){
            for(int i=0; i<L[0]; ++i){
                s[i]=A[0][i];
            }
            for(int i=L[0]; i<len; ++i)s[i]=A[1][i-len+L[1]];
            s[len]=0;
            if(valid(s, len)){//cout<<"drugi";
                sol2=s;
                if(sol2.length()<sol.length()||sol.length()==0)sol=sol2;
                //cout<<sol<<endl;
                break;
            }
        }
        copy(sol.begin(), sol.end(), s+1);
        if(sol.length()==0){
            return -1;

        }
        return sol.length();
    }
    return -1;
}