sys.stdin = open('input.txt') while True: N = int(input()) if N == 0: break sStr = [] for i in range(N): line = raw_input().strip() for c in line: sStr.append(unichr(ord(c) + 10000)) # sStr.append(c) sStr.append(unichr(i + 100)) # sStr.append(chr(i + ord('1'))) # for s in sStr: print ord(s) L = len(sStr) SA = tks.simple_kark_sort(''.join(sStr)) LCP = tks.LCP(sStr, SA) # for v in SA[:L]: print ''.join(sStr[v:]) # print LCP belongLine = [0] * L for i, v in enumerate(SA[:L]): j = v while ord(sStr[j]) > 10000: j += 1 belongLine[i] = ord(sStr[j]) # print belongLine # find the start and end result = 0
sys.stdin = open('input.txt') while True: N = int(input()) if N == 0: break sStr = [] for i in range(N): line = raw_input().strip() for c in line: sStr.append(ord(c) + 10000) # sStr.append(c) sStr.append(i + 100) # sStr.append(chr(i + ord('1'))) # for s in sStr: print ord(s) L = len(sStr) SA = tks.simple_kark_sort(sStr) LCP = tks.LCP(sStr, SA) # for v in SA[:L]: print ''.join(sStr[v:]) # print LCP belongLine = [0] * L for i, v in enumerate(SA[:L]): j = v while sStr[j] > 10000: j += 1 belongLine[i] = sStr[j] # print belongLine # find the start and end result = 0