9
lfpgbnlzyn
c
s
w
r
m
q
y
yinfblfcdhidphyfvgkxyuwomahiibbhnigdslsguhjkplibnhhrshtekwgefxeugyyyyy
 6
u
p
m
z
v
vv
 4
qe
nd
iqryhukieskfvaeettersinksrmazelxtgvartuz
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 6
nf
ysvchtjkfgsbyfzxjaykey
advqnf
wl
pi
ppppfvvmaebvhkoagppppp
 3
j
k
kkailgwqnxtdsttkkkkkkk
 4
o
yhnx
e
ennn
 10
j
dyfu
udzj
wwow
xtnw
f
c
q
o
gggg
 6
w
g
c
j
y
f
 4
r
o
w
wwwwwwwwww
 2
zxwp
ppppctfisvflhtjggg
 5
m
g
u
t
tttt
 2
n
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 3
lt
en
eeeeeeeeee
 4
vr
hp
l
llbn

7 5 541 10 10 4 4 1 21 5 9 93 21 3
import string
def umnoj(x,y):
    str=''
    for i in range(len(x)):
        str+=y+x[i]
    str+=y    
    return str

def krasota(str): 
    kr=1
    tmp_kr=1
    for i in range(1,len(str)):
        if str[i-1]==str[i]:
            tmp_kr+=1
        elif (tmp_kr>1) and (tmp_kr>kr):
            kr,tmp_kr=tmp_kr,1            
        else:
            tmp_kr=1;
    if tmp_kr>kr:
        return tmp_kr
    else:
        return kr

def krasota_in_end(str, kr):
    str_1=str[::-1]
    priznak=[0,0]
    if str[0:kr].count(str[0])==kr:
        priznak[0]=1
    if str_1[0:kr].count(str_1[0])==kr:
        priznak[1]=1
    return priznak
    
def count_end_simbol (str):
    count=2
    for i in range(1,len(str)):
        if str[0]==str[i]:
            count+=1
        else:
            break
    for i in range (len(str)-2,0,-1):
        if str[-1]==str[i]:
            count+=1
        else:
            break
    return count

def simbol_in_strs(n, simbol): #n- номер строки, до которой нужно поверять
    if n==0:
        return False
    for i in range(n):
        if strs[i].count(simbol)>0:
            return True
    return False

def count_simbol_left(str, c):
    if str[0]!=c:
        return 0
    else:
        count =1
        for i in range(1,len(str)):
            if str[0]==str[i]:
                count+=1
            else:
                return count
            
def func(number_str):
    if number_str==0:
        return len(strs[0])
    str_pred=strs[number_str-1]
    str_cur=strs[number_str]
    simbol=str_cur[0]
    if (str_pred.count(str_pred[0])==len(str_pred)) and (str_pred[0]==simbol):
        return (len(str_cur)+1)*func(number_str-1)+len(str_cur)
    else:
        flag=simbol_in_strs(number_str-1,simbol)
        str_pred_analog=[];                                                 #по предыдущей строке определяем (i,j,k): где
        str_pred_analog.append(count_simbol_left(str_pred, simbol))         # i и j - кол-во вхождений simbol подряд слева и справа,
        str_pred_analog.append(count_simbol_left(str_pred[::-1], simbol))   # а k - max число вхождений simbol подряд в центре
        tmp=str_pred[str_pred_analog[0]:-str_pred_analog[1]]                # Например, 'aabaaaca' по 'a'  - это (2,1,3)
        if (tmp.count(simbol)==0):
            str_pred_analog.append(0)
        else:
            tmp_list=[]
            while tmp.count(simbol)>0:
                position = tmp.find(simbol)
                tmp=tmp[position:]
                tmp_list.append(count_simbol_left(tmp, simbol))
                tmp=tmp[tmp_list[-1]:]
            str_pred_analog.append(max(tmp_list))
        if flag:
            t=max(str_pred_analog[0]+str_pred_analog[1]+1,str_pred_analog[2])
            return t*(len(str_cur)+1)+len(str_cur)
        else:
            t= max(str_pred_analog[0],str_pred_analog[1],str_pred_analog[2])
            return t*(len(str_cur)+1)+len(str_cur)
                                    
     
N=0     # количество строк
strs=[] # список строк
# f = open('input.txt')
# strs = f.read().split()
# f.close()
# N=int(strs[0])
# del strs[0]   
while True:
    N_str=(input("Введите количество строк:"))
    try:
        N=int(N_str)
        if 2<=N<=100000:
            break
        else:
            print("Количество строк должно быть в диапазоне от 1 до 100000. Повторите ввод.")
    except:
        print ("Введённая последовательность не является числом. Повторите ввод.")
for i in range(N):
    flag_ascii_lowercase = True
    while flag_ascii_lowercase:
        print ('Введите ',i+1,' строку:',end='')
        flag_ascii_lowercase = False
        cur_str=(input())
        if cur_str=='':
            print("Строка должна быть не пустой. Повторите ввод")
            flag_ascii_lowercase=True
        for cur_simbol in cur_str:
            if string.ascii_lowercase.count(cur_simbol)==0:
                print("Строки должны состоять из маленьких букв латинского алфавита. Повторите ввод")
                flag_ascii_lowercase=True
                break
        strs.append(cur_str)
# Определяем какого вида последняя строка.
if strs[-1].count(strs[-1][0])==len(strs[-1]):
    #print("Последняя строка состоит из одинаковых символов")
    if not simbol_in_strs(N-1, strs[-1][0]):
        print (krasota(strs[-1]))
    else:
        print (func(N-1))
elif strs[-1][0]==strs[-1][-1]:
    #print ("В последней строке совпадают первый и последний символ.")
    krasota_last_str=krasota(strs[-1])
    if simbol_in_strs(N-1, strs[-1][0]):
        print (max(krasota_last_str, count_end_simbol(strs[-1])+1))
    else:
        print (krasota_last_str)
else:
    #print ("Последняя строка без  особенностей")
    krasota_last_str=krasota(strs[-1])
    priznak_last_str=krasota_in_end(strs[-1], krasota_last_str)
    if (priznak_last_str[0]==1 and simbol_in_strs(N-1, strs[-1][0])) or(priznak_last_str[1]==1 and simbol_in_strs(N-1, strs[-1][-1])):
        print(krasota_last_str+1)
    else:
        print ( krasota_last_str)

#--------Решаем "в лоб" для проверки----------------
# rez=strs[0]
# for i in range(1,N):    
#     rez=umnoj(rez, strs[i])
#  
# #print (rez)
# print('Красота методом "в лоб" = ',krasota(rez))
# print("ОК")