#include using namespace std; using lint = long long; int main() { lint n, k; cin >> n >> k; if (k == 1) { cout << 0 << endl; return 0; } string s = to_string(n); int sz = s.size(); auto f = [&](lint x) -> string { string res = to_string(x); string add = ""; for (int i = 0; i < sz - (int)res.size(); i++) { add += '0'; } res = add + res; return res; }; lint l = 0, r = n; while (r - l > 1) { lint mid = (l + r) / 2; string t = f(mid); vector> dp(sz + 1, vector(2)); dp[0][0] = 1; for (int i = 0; i < sz; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k <= s[i] - '0'; k++) { if (j == 0 && t[i] - '0' < k) { continue; } int ni = i + 1; int nj = j | (k < t[i] - '0'); dp[ni][nj] += dp[i][j]; } } } lint cnt = dp[sz][0] + dp[sz][1]; if (k <= cnt) { r = mid; } else { l = mid; } } cout << r << endl; }