import random

def bestpath(l):
    n = len(l)
    best = ['{']*n
    best[0] = l[0][0]
    for i in range(1, n):
        for k in range(i+1):
            prev = min(l[i-1][k-1], l[i-1][k])
            if prev == best[i-1]:
                best[i] = min(best[i], l[i][k])
            else:
                l[i][k] = '{'
    return best
    
l = []
n = 5
for i in range(1,n+1):
    l.append([chr(97  + random.randint(0,5)) for _ in range(i)])
    l[-1].append('{')
    print(''.join(l[-1][:-1]))

print('--------')
print(''.join(bestpath(l)))