from math import factorial
def combination(n, r):
    return factorial(n)//(factorial(n-r) * factorial(r))

def answer(n,k):
    ans = 0
    if k>1:
        if n=='':
            return 0
        # 先頭が0の時
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
    else:
        if n=='':
            return 0
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
    return ans

n = input()
k = int(input())

print(answer(n,k) if len(n)>=k else 0) from math import factorial def combination(n, r):
    return factorial(n)//(factorial(n-r) * factorial(r)) combination return factorial(n)//(factorial(n-r) * factorial(r)) factorial(n)//(factorial(n-r) * factorial(r)) factorial(n) factorial n factorial(n-r) * factorial(r) factorial(n-r) factorial n-r n r factorial(r) factorial r n n r r def answer(n,k):
    ans = 0
    if k>1:
        if n=='':
            return 0
        # 先頭が0の時
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
    else:
        if n=='':
            return 0
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
    return ans answer ans = 0 ans 0 if k>1:
        if n=='':
            return 0
        # 先頭が0の時
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
    else:
        if n=='':
            return 0
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
     k>1 k 1 if n=='':
            return 0
        # 先頭が0の時
         n=='' n '' return 0 0 if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
     n[0]=='0' n[0] n 0 '0' ans += answer(n[1:],k) ans answer(n[1:],k) answer n[1:] n 1: 1 k if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
             len(n)>k len(n) len n k ans += combination(len(n)-1,k)*9**k ans combination(len(n)-1,k)*9**k combination(len(n)-1,k) combination len(n)-1 len(n) len n 1 k 9**k 9 k if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
             len(n)>k-1 len(n) len n k-1 k 1 ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1) ans (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1) (int(n[0])-1)*combination(len(n)-1,k-1) int(n[0])-1 int(n[0]) int n[0] n 0 1 combination(len(n)-1,k-1) combination len(n)-1 len(n) len n 1 k-1 k 1 9**(k-1) 9 k-1 k 1 ans += answer(n[1:],k-1) ans answer(n[1:],k-1) answer n[1:] n 1: 1 k-1 k 1 if n=='':
            return 0
         n=='' n '' return 0 0 if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
     n[0]=='0' n[0] n 0 '0' ans += answer(n[1:],k) ans answer(n[1:],k) answer n[1:] n 1: 1 k if len(n)>1:
                ans += combination(len(n)-1,1)*9
             len(n)>1 len(n) len n 1 ans += combination(len(n)-1,1)*9 ans combination(len(n)-1,1)*9 combination(len(n)-1,1) combination len(n)-1 len(n) len n 1 1 9 ans += int(n[0]) ans int(n[0]) int n[0] n 0 return ans ans n n k k n = input() n input() input k = int(input()) k int(input()) int input() input print(answer(n,k) if len(n)>=k else 0) print answer(n,k) if len(n)>=k else 0 len(n)>=k len(n) len n k answer(n,k) answer n k 0 def answer(n,k):
    ans = 0
    if k>1:
        if n=='':
            return 0
        # 先頭が0の時
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
    else:
        if n=='':
            return 0
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
    return ans def answer(n,k):
    ans = 0
    if k>1:
        if n=='':
            return 0
        # 先頭が0の時
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
    else:
        if n=='':
            return 0
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
    return ans answer k = int(input()) int(input()) k def combination(n, r):
    return factorial(n)//(factorial(n-r) * factorial(r)) def combination(n, r):
    return factorial(n)//(factorial(n-r) * factorial(r)) combination n = input() input() n
from math import factorial
def combination(n, r):
    return factorial(n)//(factorial(n-r) * factorial(r))

def answer(n,k):
    ans = 0
    if k>1:
        if n=='':
            return 0
        # 先頭が0の時
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            # 先頭以外で3つ使う
            if len(n)>k:
                ans += combination(len(n)-1,k)*9**k
            # 先頭で一つ使うが、先頭はNの先頭より小さい
            if len(n)>k-1:
                ans += (int(n[0])-1)*combination(len(n)-1,k-1)*9**(k-1)
            # 先頭で、Nの先頭と同じ数を使う
            ans += answer(n[1:],k-1)
    else:
        if n=='':
            return 0
        if n[0]=='0':
            ans += answer(n[1:],k)
        else:
            if len(n)>1:
                ans += combination(len(n)-1,1)*9
            ans += int(n[0])
    return ans

n = input()
k = int(input())

print(answer(n,k) if len(n)>=k else 0)