# input
N = int(input())
K = int(input())

# defnition
N_bin = str(N)
digit_len_N = len(N_bin)
DP = [[[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1)]
# DP[i][j][k]は、上位i桁目までで、(j==0 ?Nと同じになる可能性あり:必ずNより小さくなる)の時に、0以外の数がkこ出現する、数字の数


# initialize
DP[0][0][0] = 1

# solve with けたDP
for digit in range(digit_len_N):
    max_digit = int(N_bin[digit])
    for smaller in range(2):  # smaller=0?Nと同じになる可能性あり:Nより小さいの確定
        for k in range(K+1):
            cand_digits = max_digit+1 if smaller == 0 else 10  # 小さい確定なら0~9の全部が候補
            for next in range(cand_digits):
                if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k]
print(DP[-1][0][K]+DP[-1][1][K]) N = int(input()) N int(input()) int input() input K = int(input()) K int(input()) int input() input N_bin = str(N) N_bin str(N) str N digit_len_N = len(N_bin) digit_len_N len(N_bin) len N_bin [[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1) for _ in range(digit_len_N+1) _ range(digit_len_N+1) range digit_len_N+1 digit_len_N 1 for _ in range(digit_len_N+1) [[0]*(K+2) for _ in range(2)] DP = [[[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1)] DP [[[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1)] DP[0][0][0] = 1 DP[0][0][0] [0] [0] DP 0 0 0 1 for digit in range(digit_len_N):
    max_digit = int(N_bin[digit])
    for smaller in range(2):  # smaller=0?Nと同じになる可能性あり:Nより小さいの確定
        for k in range(K+1):
            cand_digits = max_digit+1 if smaller == 0 else 10  # 小さい確定なら0~9の全部が候補
            for next in range(cand_digits):
                if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k] digit range(digit_len_N) range digit_len_N max_digit = int(N_bin[digit]) max_digit int(N_bin[digit]) int N_bin[digit] N_bin digit for smaller in range(2):  # smaller=0?Nと同じになる可能性あり:Nより小さいの確定
        for k in range(K+1):
            cand_digits = max_digit+1 if smaller == 0 else 10  # 小さい確定なら0~9の全部が候補
            for next in range(cand_digits):
                if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k] smaller range(2) range 2 for k in range(K+1):
            cand_digits = max_digit+1 if smaller == 0 else 10  # 小さい確定なら0~9の全部が候補
            for next in range(cand_digits):
                if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k] k range(K+1) range K+1 K 1 cand_digits = max_digit+1 if smaller == 0 else 10 cand_digits max_digit+1 if smaller == 0 else 10 smaller == 0 smaller 0 max_digit+1 max_digit 1 10 for next in range(cand_digits):
                if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k] next range(cand_digits) range cand_digits if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k] next == max_digit and smaller == 0 next == max_digit next max_digit smaller == 0 smaller 0 if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                 next == 0 next 0 DP[digit+1][0][k] += DP[digit][0][k] DP[digit+1][0][k] [0] [digit+1] DP digit+1 digit 1 0 k DP[digit][0][k] [0] [digit] DP digit 0 k DP[digit+1][0][k+1] += DP[digit][0][k] DP[digit+1][0][k+1] [0] [digit+1] DP digit+1 digit 1 0 k+1 k 1 DP[digit][0][k] [0] [digit] DP digit 0 k if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k] next == 0 next 0 DP[digit+1][1][k] += DP[digit][smaller][k] DP[digit+1][1][k] [1] [digit+1] DP digit+1 digit 1 1 k DP[digit][smaller][k] [smaller] [digit] DP digit smaller k DP[digit+1][1][k+1] += DP[digit][smaller][k] DP[digit+1][1][k+1] [1] [digit+1] DP digit+1 digit 1 1 k+1 k 1 DP[digit][smaller][k] [smaller] [digit] DP digit smaller k print(DP[-1][0][K]+DP[-1][1][K]) print DP[-1][0][K]+DP[-1][1][K] DP[-1][0][K] [0] [-1] DP -1 0 K DP[-1][1][K] [1] [-1] DP -1 1 K cand_digits = max_digit+1 if smaller == 0 else 10 max_digit+1 if smaller == 0 else 10 cand_digits max_digit = int(N_bin[digit]) int(N_bin[digit]) max_digit K = int(input()) int(input()) K N_bin = str(N) str(N) N_bin N = int(input()) int(input()) N digit_len_N = len(N_bin) len(N_bin) digit_len_N DP = [[[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1)] [[[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1)] DP
# input
N = int(input())
K = int(input())

# defnition
N_bin = str(N)
digit_len_N = len(N_bin)
DP = [[[0]*(K+2) for _ in range(2)] for _ in range(digit_len_N+1)]
# DP[i][j][k]は、上位i桁目までで、(j==0 ?Nと同じになる可能性あり:必ずNより小さくなる)の時に、0以外の数がkこ出現する、数字の数


# initialize
DP[0][0][0] = 1

# solve with けたDP
for digit in range(digit_len_N):
    max_digit = int(N_bin[digit])
    for smaller in range(2):  # smaller=0?Nと同じになる可能性あり:Nより小さいの確定
        for k in range(K+1):
            cand_digits = max_digit+1 if smaller == 0 else 10  # 小さい確定なら0~9の全部が候補
            for next in range(cand_digits):
                if next == max_digit and smaller == 0:  # Nと同じになる可能性を残しつつ
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][0][k] += DP[digit][0][k]
                    else:
                        DP[digit+1][0][k+1] += DP[digit][0][k]
                else:  # ここで、Nより必ず小さい道に行く
                    if next == 0:  # 0のときは,kの値が増えないので特別扱い
                        DP[digit+1][1][k] += DP[digit][smaller][k]
                    else:
                        DP[digit+1][1][k+1] += DP[digit][smaller][k]
print(DP[-1][0][K]+DP[-1][1][K])
