output_description: Print the K-th lexicographically smallest substring of K.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      s
      K
attempt: s = input()
  K = int(input())
  
  str_list = list(s)
  str_list2 = list(s)
  str_list2 = list(set(str_list2))
  str_list2.sort()
  a = str_list2[0]
  n = str_list.count(a)
  
  if K == 1:
      print(a)
  else:
      K -= 1
      indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 1]
      if len(indexes) > 0:
          sub_list = [s[i : i + 2] for i in indexes]
      indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 2]
      if len(indexes) > 0:
          sub_list += [s[i : i + 3] for i in indexes]
      indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 3]
      if len(indexes) > 0:
          sub_list += [s[i : i + 4] for i in indexes]
      indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 4]
      if len(indexes) > 0:
          sub_list += [s[i : i + 5] for i in indexes]
      sub_list = list(set(sub_list))
      sub_list.sort()
      if len(sub_list) >= K:
          print(sub_list[K - 1])
      else:
          K -= len(sub_list)
          a = str_list[1]
          if K == 1:
              print(a)
          else:
              K -= 1
              indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 1]
              if len(indexes) > 0:
                  sub_list = [s[i : i + 2] for i in indexes]
              indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 2]
              if len(indexes) > 0:
                  sub_list += [s[i : i + 3] for i in indexes]
              indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 3]
              if len(indexes) > 0:
                  sub_list += [s[i : i + 4] for i in indexes]
              indexes = [i for i, x in enumerate(str_list) if x == a and i < len(s) - 4]
              sub_list = list(set(sub_list))
              sub_list.sort()
              if len(sub_list) >= K:
                  print(sub_list[K - 1])
              else:
                  K -= len(sub_list)
                  a = str_list[2]
                  if K == 1:
                      print(a)
                  else:
                      K -= 1
                      indexes = [
                          i for i, x in enumerate(str_list) if x == a and i < len(s) - 1
                      ]
                      if len(indexes) > 0:
                          sub_list = [s[i : i + 2] for i in indexes]
                      indexes = [
                          i for i, x in enumerate(str_list) if x == a and i < len(s) - 2
                      ]
                      if len(indexes) > 0:
                          sub_list += [s[i : i + 3] for i in indexes]
                      indexes = [
                          i for i, x in enumerate(str_list) if x == a and i < len(s) - 3
                      ]
                      if len(indexes) > 0:
                          sub_list += [s[i : i + 4] for i in indexes]
                      indexes = [
                          i for i, x in enumerate(str_list) if x == a and i < len(s) - 4
                      ]
                      sub_list = list(set(sub_list))
                      sub_list.sort()
                      print(sub_list[K - 1])
  
problem_description: Statement
  
  You are given a string s. Among the **different** substrings of s, print the
  K-th lexicographically smallest one.
  
  A substring of s is a string obtained by taking out a non-empty contiguous
  part in s. For example, if s = `ababc`, `a`, `bab` and `ababc` are substrings
  of s, while `ac`, `z` and an empty string are not. Also, we say that
  substrings are different when they are different as strings.
  
  Let X = x_{1}x_{2}...x_{n} and Y = y_{1}y_{2}...y_{m} be two distinct strings.
  X is lexicographically larger than Y if and only if Y is a prefix of X or
  x_{j} > y_{j} where j is the smallest integer such that x_{j} \neq y_{j}.
samples: [{"input": "aba\n    4", "output": "b\n    \n\ns has five substrings: `a`, `b`, `ab`, `ba` and `aba`. Among them, we should\nprint the fourth smallest one, `b`. Note that we do not count `a` twice.\n\n* * *"}, {"input": "atcoderandatcodeer\n    5", "output": "andat\n    \n\n* * *"}, {"input": "z\n    1", "output": "z"}]