import itertools
ws=[]
subs=[]
set_subs=[]
for i in xrange(int(raw_input())):
S=raw_input()
l=len(S)
subs.append(S[i:j+1] for i in xrange(l) for j in xra
Well, this is one of the strange features of generator expression. Have a look at this
In your case it is used late binding and that's why you will get two identical results.