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: import copy
  
  n, m = map(int, input().split())
  p = list(map(int, input().split()))
  q = list()
  for i in range(m):
      q.append(set(map(int, input().split())))
  count = 0
  while count != 5000:
      a = q.pop()
      for j in q:
          if len(j & a) != 0:
              j |= a
              count = 0
              break
      else:
          q = [a] + q
      if count > len(q):
          break
      count += 1
  
  q2 = copy.copy(set(p))
  for i in q:
      q2 -= i
  
  count2 = len([i for i in q2 if i == p[i - 1]])
  
  for i in q:
      r = list()
      for j in list(i):
          r.append(p[j - 1])
      # print(i,r)
      count2 += len(i & set(r))
  print(count2)
  
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"}]