main = do
  li <- getLine
  let n = read li
  let ans = compute n
  putStrLn $ unlines ans

compute :: Int -> [String]
compute n = permlim n 'a'
  where
    xs = take n ['a'..]
-- 長さnで、xsの辞書順リスト。ただし新たな要素を使うなら必ずk
-- kを使った場合、それ以降はk+1まで使ってよい。
-- DPしないと吹っ飛ぶ？
    permlim 0 _ = [ [] ]
    permlim n k =
      [ x:ys
      | x <- takeWhile (k >=) xs
      , ys <- permlim (pred n) (if x == k then succ k else k) ]