인버전 조건을 만족하는 문자열 찾기

앞 N개 소문자를 한 번씩 쓴 순열 중에서 반전이 V개 이상이고 주어진 문자열 S보다 사전순으로 앞서지 않는 가장 작은 순열을 찾는다.

보통7백트래킹조합론그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

길이가 NN인 문자열 SS에서 인버전의 개수는 0i<j<N0 \le i < j < N이고 S[i]>S[j]S[i] > S[j]인 쌍 (i,j)(i, j)의 개수다. 문자열의 첫 글자는 0번째 글자다. 예를 들어 "abcab"의 인버전은 (1,3)(1, 3), (2,3)(2, 3), (2,4)(2, 4)의 세 개다.

정수 NNVV, 그리고 문자열 SS가 주어진다. 알파벳 소문자 처음 NN개를 각각 한 번씩 써서 만든 길이 NN의 문자열, 즉 그 NN개 글자의 순열 중에서 다음 두 조건을 모두 만족하는 것을 RR이라 한다.

  • RR의 인버전 개수가 VV 이상이다.
  • RRSS보다 사전순으로 앞서지 않는다.

조건을 만족하는 RR 중에서 사전순으로 가장 앞서는 문자열을 구하라.

입력

첫째 줄에 NN이 주어진다. (1N201 \le N \le 20)

둘째 줄에 VV가 주어진다. (0VN×(N1)/20 \le V \le N \times (N-1) / 2)

셋째 줄에 문자열 SS가 주어진다. SS는 알파벳 소문자 처음 NN개 중 일부로 이루어지고, 같은 글자가 두 번 나오지 않는다. SS의 길이는 1 이상 NN 이하다.

출력

첫째 줄에 조건을 만족하는 RR을 출력한다. 조건을 만족하는 RR이 없으면 -1을 출력한다.