You are given a string s consisting of n lowercase Latin letters. Polycarp wants to remove exactly k characters (k ≤ n) from the string s. Polycarp uses the following algorithm k times:

  * if there is at least one letter 'a', remove the leftmost occurrence and stop the algorithm, otherwise go to next item; 
  * if there is at least one letter 'b', remove the leftmost occurrence and stop the algorithm, otherwise go to next item; 
  * ... 
  * remove the leftmost occurrence of the letter 'z' and stop the algorithm. 



This algorithm removes a single letter from the string. Polycarp performs this algorithm exactly k times, thus removing exactly k characters.

Help Polycarp find the resulting string.

Input

The first line of input contains two integers n and k (1 ≤ k ≤ n ≤ 4 ⋅ 10^5) — the length of the string and the number of letters Polycarp will remove.

The second line contains the string s consisting of n lowercase Latin letters.

Output

Print the string that will be obtained from s after Polycarp removes exactly k letters using the above algorithm k times.

If the resulting string is empty, print nothing. It is allowed to print nothing or an empty line (line break).

Examples

Input

15 3
cccaabababaccbc


Output

cccbbabaccbc


Input

15 9
cccaabababaccbc


Output

cccccc


Input

1 1
u


Output
#include <bits/stdc++.h>
using namespace std;
bool isVowel(char c) {
  if (c != 'a' && c != 'o' && c != 'u' && c != 'e' && c != 'i') {
    return false;
  } else {
    return true;
  }
}
bool isConst(char c) {
  if (c != 'a' && c != 'o' && c != 'u' && c != 'e' && c != 'i') {
    return true;
  } else {
    return false;
  }
}
bool cmp_x(pair<long long, long long> a, pair<long long, long long> b) {
  if (a.first == b.first) {
    return a.second < b.second;
  }
  return a.first < b.first;
}
bool cmp_y(pair<int, int> a, pair<int, int> b) {
  if (a.second == b.second) {
    return a.first < b.first;
  }
  return a.second < b.second;
}
bool cmp(int a, int b) { return abs(a) > abs(b); }
bool isprime(int n) {
  if (n == 1) {
    return false;
  }
  if (n <= 3) {
    return true;
  }
  if (n % 2 == 0) {
    return false;
  }
  if (n % 3 == 0) {
    return false;
  }
  for (int i = 5; i * i <= n; i += 4) {
    if (n % i == 0) {
      return false;
    }
    if (n % (i + 2) == 0) {
      return false;
    }
  }
  return true;
}
bool isThere(vector<pair<int, int> > arr, pair<int, int> x, long long left,
             long long right) {
  if (left > right) {
    return false;
  }
  long long mid = (left + right) / 2;
  if (arr[mid] < x) {
    return isThere(arr, x, mid + 1, right);
  }
  if (arr[mid] > x) {
    return isThere(arr, x, left, mid - 1);
  }
  if (arr[mid] == x) {
    return true;
  }
  return false;
}
long long binarySearch(long long arr[], long long x, int size) {
  long long left = 0, right = size - 1;
  while (left <= right) {
    long long mid = (left + right) / 2;
    if (arr[mid] == x) {
      return mid;
    } else if (arr[mid] < x) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }
  if (arr[left] > x) return left - 1;
  return left;
}
long long power(long long a, long long b) {
  if (b == 0) {
    return 1;
  }
  long long ret = power(a, b / 2);
  ret *= ret;
  if (b & 1) {
    ret *= a;
  }
  return ret;
}
bool sort_strings_by_size(string a, string b) { return a.size() < b.size(); }
class Stack {
  int n;

 public:
  Stack() { n = 0; }
  void push();
  void pop();
  int size();
};
void Stack::push() {
  n++;
  return;
}
void Stack::pop() {
  n--;
  return;
}
int Stack::size() { return n; }
int main() {
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  for (long long q = 0; q < 26; q += 1) {
    for (long long i = 0; i < s.size(); i += 1) {
      if (k == 0) {
        cout << s;
        return 0;
      }
      if (s[i] == 'a' + q) {
        s.erase(s.begin() + i);
        i--;
        k--;
      }
    }
  }
  cout << s;
}
