Como encontrar todas as substrings únicas de uma string muito longa?

Eu tenho uma corda muito longa. Eu quero encontrar todas as substrings exclusivas dessa string. Tentei escrever o código em que usei umconjunto(python) para armazenar todas as substrings para garantir exclusividade. Estou obtendo resultado correto para muitas seqüências médias e grandes, no entanto, no caso de sequências muito grandes, estou recebendo um MemoryError. Pesquisei um pouco e descobri que oconjunto estrutura de dados em python tem uma grande área de cobertura de RAM e talvez seja por isso que estou recebendo um MemoryError.

Aqui está o meu código:

a = set()
for i in range(n):
    string = raw_input()
    j = 1
    while True:
        for i in xrange(len(string)-j+1):   
            a.add(string[i:i+j])
        if j==len(string):   break
        j+=1
print sorted(list(a))

Existe uma maneira de evitar esse erro para cadeias grandes? Ou alguém pode sugerir uma modificação melhor no meu código para lidar com esse problema?

P.S: Não tenho a opção de alternar entre versões de 32 e 64 bits.

questionAnswers(2)

yourAnswerToTheQuestion