Using List Counting (code golf):
findSubs=lambda s,v:[''.join([s[i+j] for j in range(v)]) for i,x in enumerate(s) if i<=len(s)-v] findCount=lambda s,v:len(findSubs(s,v)) print findSubs('ABCDEFG', 5)
Update
For your update, you can list the list above into a set, return to the list, and then sort the lines.
findUnique=lambda s,v:sorted(list(set(findSubs(s,v)))) findUniqueCount=lambda s,v:len(findUnique(s,v)) print findUnique('AAAAAA', 5) #returns ['AAAAA'] print findUniqueCount('AAAAAA', 5) #returns 1
source share