すなおに関数で書いてみた。limitwidthで文字幅を決める。デフォルトは'a'から
'zzzzz’まで。basecharsetは作りたい文字のリストとかを指定。
('a','b','c'・・・)みたいなtupleを作って入れたほうが少し速い。
結果はリストのリストで帰ってくる。+で連結するよりappendのほうが速いから。

def generate(lowerlimitwidth = 1,upperlimitwidth = 5 \
  ,basecharset = string.ascii_lowercase):
  generatedstringslist = []
  charsequences = basecharset
  for i in range(1,upperlimitwidth):
    if i >= lowerlimitwidth:
      generatedstringslist.append(charsequences)
    charsequences = [x + y for x in charsequences for y in basecharset]
  generatedstringslist.append(charsequences)
  return generatedstringslist

とりあえず、同じ処理なら229、265のやつの3-5倍は速いみたい。