Количество повторений в слове Python

Например для слова 'abab' количество повторений 3: 'a' 'b' 'ab' , но код который я написал ищет повторы только по буквам. Как сделать так чтобы он искал все повторы в строке

a=input()
m=[] 
def duplicate_count(text):
    d=len(text)
    s=0
    for h in range(d):
        f=[]
        for i in range(h):
            f.append(text[i])
            if text[i].lower() in text[i+1:].lower() and text[i].lower() not in m:
                m.append(text[i].lower())
                s+=1
    return s
print(duplicate_count(a))

Ответы (1 шт):

Автор решения: Alioshca Z

Можно так:

a = input('Введите строку: ')

def duplicate_count(text):
    d = {}
    all_subs = [text[i: y] for i in range(len(text)) for y in range(i + 1, len(text) + 1)]
    for el in all_subs:
        if el not in d and text.count(el) > 1:
            d[el] = text.count(el)

    return len(d) #замените return len(d) на return d, чтобы посмотреть словарь из повторов

print(duplicate_count(a))
→ Ссылка