import sys
# input = sys.stdin.readline
sys.setrecursionlimit(10 ** 9)
MOD = 10 ** 9 + 7

N = list(input())
n = len(N)
K = int(input())

dp1 = [[0] * (K + 1) for _ in range(n + 1)] #N以下が確定していて、0以外の数をk個使ったとき
dp2 = [0] * (n + 1) #N以下が確定していないときの0以外の数の個数

for i in range(n):
    a = int(N[i])

    if a != 0:
        dp2[i + 1] = dp2[i] + 1
    else:
        dp2[i + 1] = dp2[i]
    
    #0を使うことで0以外の数が増えないパターン
    for k in range(K + 1):
        dp1[i + 1][k] = dp1[i][k]

    #0以外の数を使うことで0以外の数が増えるパターン
    for k in range(K):
        dp1[i + 1][k + 1] += dp1[i][k] * 9
    
    #今回でN以下が確定するパターン
    tmp = dp2[i] #確定する前までに0以外の数を何個使っているか
    if a == 0: #今回でN以下が確定することはない
        continue
    else:
        if tmp > K: #すでにK個以上の0以外の数を使っているとき
            continue
        else:
            if tmp == K: #ちょうどK個使っている時
                dp1[i + 1][tmp] += 1 #0を使うしかない
            else:
                dp1[i + 1][tmp] += 1 #0を使うしかない
                dp1[i + 1][tmp + 1] += (a - 1) #N以下を確定させるためaは使えない

ans = dp1[n][K]
if dp2[n] == K:
    ans += 1

print (ans)

# print (dp1)
# print (dp2) import sys sys sys.setrecursionlimit(10 ** 9) sys.setrecursionlimit sys setrecursionlimit 10 ** 9 10 9 MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 N = list(input()) N list(input()) list input() input n = len(N) n len(N) len N K = int(input()) K int(input()) int input() input [0] * (K + 1) for _ in range(n + 1) for _ in range(n + 1) _ range(n + 1) range n + 1 n 1 for _ in range(n + 1) [0] * (K + 1) [0] 0 K + 1 K 1 dp1 = [[0] * (K + 1) for _ in range(n + 1)] dp1 [[0] * (K + 1) for _ in range(n + 1)] dp2 = [0] * (n + 1) dp2 [0] * (n + 1) [0] 0 n + 1 n 1 for i in range(n):
    a = int(N[i])

    if a != 0:
        dp2[i + 1] = dp2[i] + 1
    else:
        dp2[i + 1] = dp2[i]
    
    #0を使うことで0以外の数が増えないパターン
    for k in range(K + 1):
        dp1[i + 1][k] = dp1[i][k]

    #0以外の数を使うことで0以外の数が増えるパターン
    for k in range(K):
        dp1[i + 1][k + 1] += dp1[i][k] * 9
    
    #今回でN以下が確定するパターン
    tmp = dp2[i] #確定する前までに0以外の数を何個使っているか
    if a == 0: #今回でN以下が確定することはない
        continue
    else:
        if tmp > K: #すでにK個以上の0以外の数を使っているとき
            continue
        else:
            if tmp == K: #ちょうどK個使っている時
                dp1[i + 1][tmp] += 1 #0を使うしかない
            else:
                dp1[i + 1][tmp] += 1 #0を使うしかない
                dp1[i + 1][tmp + 1] += (a - 1) #N以下を確定させるためaは使えない i range(n) range n a = int(N[i]) a int(N[i]) int N[i] N i if a != 0:
        dp2[i + 1] = dp2[i] + 1
    else:
        dp2[i + 1] = dp2[i]
    
    #0を使うことで0以外の数が増えないパターン
     a != 0 a 0 dp2[i + 1] = dp2[i] + 1 dp2[i + 1] dp2 i + 1 i 1 dp2[i] + 1 dp2[i] dp2 i 1 dp2[i + 1] = dp2[i] dp2[i + 1] dp2 i + 1 i 1 dp2[i] dp2 i for k in range(K + 1):
        dp1[i + 1][k] = dp1[i][k]

    #0以外の数を使うことで0以外の数が増えるパターン
     k range(K + 1) range K + 1 K 1 dp1[i + 1][k] = dp1[i][k] dp1[i + 1][k] [i + 1] dp1 i + 1 i 1 k dp1[i][k] [i] dp1 i k for k in range(K):
        dp1[i + 1][k + 1] += dp1[i][k] * 9
    
    #今回でN以下が確定するパターン
     k range(K) range K dp1[i + 1][k + 1] += dp1[i][k] * 9 dp1[i + 1][k + 1] [i + 1] dp1 i + 1 i 1 k + 1 k 1 dp1[i][k] * 9 dp1[i][k] [i] dp1 i k 9 tmp = dp2[i] tmp dp2[i] dp2 i if a == 0: #今回でN以下が確定することはない
        continue
    else:
        if tmp > K: #すでにK個以上の0以外の数を使っているとき
            continue
        else:
            if tmp == K: #ちょうどK個使っている時
                dp1[i + 1][tmp] += 1 #0を使うしかない
            else:
                dp1[i + 1][tmp] += 1 #0を使うしかない
                dp1[i + 1][tmp + 1] += (a - 1) #N以下を確定させるためaは使えない a == 0 a 0 continue if tmp > K: #すでにK個以上の0以外の数を使っているとき
            continue
        else:
            if tmp == K: #ちょうどK個使っている時
                dp1[i + 1][tmp] += 1 #0を使うしかない
            else:
                dp1[i + 1][tmp] += 1 #0を使うしかない
                dp1[i + 1][tmp + 1] += (a - 1) #N以下を確定させるためaは使えない tmp > K tmp K continue if tmp == K: #ちょうどK個使っている時
                dp1[i + 1][tmp] += 1 #0を使うしかない
            else:
                dp1[i + 1][tmp] += 1 #0を使うしかない
                dp1[i + 1][tmp + 1] += (a - 1) #N以下を確定させるためaは使えない tmp == K tmp K dp1[i + 1][tmp] += 1 dp1[i + 1][tmp] [i + 1] dp1 i + 1 i 1 tmp 1 dp1[i + 1][tmp] += 1 dp1[i + 1][tmp] [i + 1] dp1 i + 1 i 1 tmp 1 dp1[i + 1][tmp + 1] += (a - 1) dp1[i + 1][tmp + 1] [i + 1] dp1 i + 1 i 1 tmp + 1 tmp 1 a - 1 a 1 ans = dp1[n][K] ans dp1[n][K] [n] dp1 n K if dp2[n] == K:
    ans += 1 dp2[n] == K dp2[n] dp2 n K ans += 1 ans 1 print (ans) print ans K = int(input()) int(input()) K dp2 = [0] * (n + 1) [0] * (n + 1) dp2 tmp = dp2[i] dp2[i] tmp ans = dp1[n][K] dp1[n][K] ans dp1 = [[0] * (K + 1) for _ in range(n + 1)] [[0] * (K + 1) for _ in range(n + 1)] dp1 a = int(N[i]) int(N[i]) a MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD ans += 1 1 ans n = len(N) len(N) n N = list(input()) list(input()) N
import sys
# input = sys.stdin.readline
sys.setrecursionlimit(10 ** 9)
MOD = 10 ** 9 + 7

N = list(input())
n = len(N)
K = int(input())

dp1 = [[0] * (K + 1) for _ in range(n + 1)] #N以下が確定していて、0以外の数をk個使ったとき
dp2 = [0] * (n + 1) #N以下が確定していないときの0以外の数の個数

for i in range(n):
    a = int(N[i])

    if a != 0:
        dp2[i + 1] = dp2[i] + 1
    else:
        dp2[i + 1] = dp2[i]
    
    #0を使うことで0以外の数が増えないパターン
    for k in range(K + 1):
        dp1[i + 1][k] = dp1[i][k]

    #0以外の数を使うことで0以外の数が増えるパターン
    for k in range(K):
        dp1[i + 1][k + 1] += dp1[i][k] * 9
    
    #今回でN以下が確定するパターン
    tmp = dp2[i] #確定する前までに0以外の数を何個使っているか
    if a == 0: #今回でN以下が確定することはない
        continue
    else:
        if tmp > K: #すでにK個以上の0以外の数を使っているとき
            continue
        else:
            if tmp == K: #ちょうどK個使っている時
                dp1[i + 1][tmp] += 1 #0を使うしかない
            else:
                dp1[i + 1][tmp] += 1 #0を使うしかない
                dp1[i + 1][tmp + 1] += (a - 1) #N以下を確定させるためaは使えない

ans = dp1[n][K]
if dp2[n] == K:
    ans += 1

print (ans)

# print (dp1)
# print (dp2)