output_description: Assume that there are K strings of length N that are in normal form: w_1,
  \ldots, w_K in lexicographical order. Output should be in the following
  format:
  
      
      
      w_1
      :
      w_K
      
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
attempt: import itertools
  
  n = int(input())
  t = ord("a")
  cnt = []
  s = []
  # print(chr(t))
  for i in range(10):
      k = 0
      s = []
      while k <= i:
          s.append(chr(t + k))
          k += 1
      cnt.append(s)
  c0 = cnt[0]
  c1 = cnt[1]
  c2 = cnt[2]
  c3 = cnt[3]
  c4 = cnt[4]
  c5 = cnt[5]
  c6 = cnt[6]
  c7 = cnt[7]
  c8 = cnt[8]
  c9 = cnt[9]
  if n == 1:
      print("a")
  if n == 2:
      print("aa")
      print("bb")
  if n == 3:
      for i, j, k in itertools.product(c0, c1, c2):
          print(i + j + k)
  if n == 4:
      for i0, i1, i2, i3 in itertools.product(c0, c1, c2, c3):
          print(i0 + i1 + i2 + i3)
  if n == 5:
      for i0, i1, i2, i3, i4 in itertools.product(c0, c1, c2, c3, c4):
          print(i0 + i1 + i2 + i3 + i4)
  if n == 6:
      for i0, i1, i2, i3, i4, i5 in itertools.product(c0, c1, c2, c3, c4, c5):
          print(i0 + i1 + i2 + i3 + i4 + i5)
  if n == 7:
      for i0, i1, i2, i3, i4, i5, i6 in itertools.product(c0, c1, c2, c3, c4, c5, c6):
          print(i0 + i1 + i2 + i3 + i4 + i5 + i6)
  if n == 8:
      for i0, i1, i2, i3, i4, i5, i6, i7 in itertools.product(
          c0, c1, c2, c3, c4, c5, c6, c7
      ):
          print(i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7)
  if n == 9:
      for i0, i1, i2, i3, i4, i5, i6, i7, i8 in itertools.product(
          c0, c1, c2, c3, c4, c5, c6, c7, c8
      ):
          print(i0 + i1 + i2 + i3 + i4 + i5 + i5 + i7 + i8)
  if n == 10:
      for i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 in itertools.product(
          c0, c1, c2, c3, c4, c5, c6, c7, c8, c9
      ):
          print(i0 + i1 + i2 + i3 + i4 + i5 + i5 + i7 + i8 + i9)
  
problem_description: Statement
  
  In this problem, we only consider strings consisting of lowercase English
  letters.
  
  Strings s and t are said to be **isomorphic** when the following conditions
  are satisfied:
  
    * |s| = |t| holds.
    * For every pair i, j, one of the following holds:
      * s_i = s_j and t_i = t_j.
      * s_i \neq s_j and t_i \neq t_j.
  
  For example, `abcac` and `zyxzx` are isomorphic, while `abcac` and `ppppp` are
  not.
  
  A string s is said to be in **normal form** when the following condition is
  satisfied:
  
    * For every string t that is isomorphic to s, s \leq t holds. Here \leq denotes lexicographic comparison.
  
  For example, `abcac` is in normal form, but `zyxzx` is not since it is
  isomorphic to `abcac`, which is lexicographically smaller than `zyxzx`.
  
  You are given an integer N. Print all strings of length N that are in normal
  form, in lexicographically ascending order.
samples: [{"input": "1", "output": "a\n    \n\n* * *"}, {"input": "2", "output": "aa\n    ab"}]