#include <bits/stdc++.h>
using namespace std;
long long a[3000005], has[3000005], visited[2000005], dist[1000005];
long long pr[3000010];
long long addmod(long long n, long long m) {
  return ((n % 1000000007) + (m % 1000000007)) % 1000000007;
}
long long multmod(long long n, long long m) {
  return ((n % 1000000007) * (m % 1000000007)) % 1000000007;
}
long long submod(long long n, long long m) {
  return ((n % 1000000007) - (m % 1000000007) + 1000000007) % 1000000007;
}
void prime() {
  pr[0] = 1;
  pr[1] = 1;
  for (long long i = 2; i <= sqrt(3000010); i++) {
    for (long long j = 2 * i; j <= 3000010; j += i) {
      pr[j] = 1;
    }
  }
}
long long cntDiv(long long n) {
  long long cnt = 0;
  for (long long i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      if (n / i == i)
        cnt++;
      else
        cnt += 2;
    }
  }
  return cnt;
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long has1[3000011], b[1000005], temp1[1000005];
vector<long long> mat[10001];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, k;
  cin >> n >> k;
  string str;
  cin >> str;
  if (k == 0) {
    cout << str;
    return 0;
  }
  if (str.length() == 1) {
    cout << 0;
    return 0;
  }
  for (long long i = 0; i < str.length(); i++) {
    if (i == 0) {
      if (str[i] != '1') {
        str[i] = '1';
        k--;
      }
    } else {
      if (str[i] != '0') {
        str[i] = '0';
        k--;
      }
    }
    if (k == 0) break;
  }
  cout << str;
  return 0;
}
