def nCkpow(n,k):
    if n<k:
        return 0
    y=1
    for i in range(k):
        y*=n-i
        y//=i+1
        y*=9
    return y
def f(s,m,k):
    #print(m,k)
    if len(s)-m<k:
        return 0
    if  k==0:
        return 1
    if s[m]=='0':
        return f(s,m+1,k)
    l=len(s)-m
    y=nCkpow(l-1,k)
    y+=(int(s[m])-1)*nCkpow(l-1,k-1)
    return y+f(s,m+1,k-1)
N=input()
K=int(input())
print(f(N,0,K)) def nCkpow(n,k):
    if n<k:
        return 0
    y=1
    for i in range(k):
        y*=n-i
        y//=i+1
        y*=9
    return y nCkpow if n<k:
        return 0
     n<k n k return 0 0 y=1 y 1 for i in range(k):
        y*=n-i
        y//=i+1
        y*=9
     i range(k) range k y*=n-i y n-i n i y//=i+1 y i+1 i 1 y*=9 y 9 return y y n n k k def f(s,m,k):
    #print(m,k)
    if len(s)-m<k:
        return 0
    if  k==0:
        return 1
    if s[m]=='0':
        return f(s,m+1,k)
    l=len(s)-m
    y=nCkpow(l-1,k)
    y+=(int(s[m])-1)*nCkpow(l-1,k-1)
    return y+f(s,m+1,k-1) f if len(s)-m<k:
        return 0
     len(s)-m<k len(s)-m len(s) len s m k return 0 0 if  k==0:
        return 1
     k==0 k 0 return 1 1 if s[m]=='0':
        return f(s,m+1,k)
     s[m]=='0' s[m] s m '0' return f(s,m+1,k) f(s,m+1,k) f s m+1 m 1 k l=len(s)-m l len(s)-m len(s) len s m y=nCkpow(l-1,k) y nCkpow(l-1,k) nCkpow l-1 l 1 k y+=(int(s[m])-1)*nCkpow(l-1,k-1) y (int(s[m])-1)*nCkpow(l-1,k-1) int(s[m])-1 int(s[m]) int s[m] s m 1 nCkpow(l-1,k-1) nCkpow l-1 l 1 k-1 k 1 return y+f(s,m+1,k-1) y+f(s,m+1,k-1) y f(s,m+1,k-1) f s m+1 m 1 k-1 k 1 s s m m k k N=input() N input() input K=int(input()) K int(input()) int input() input print(f(N,0,K)) print f(N,0,K) f N 0 K N=input() input() N def f(s,m,k):
    #print(m,k)
    if len(s)-m<k:
        return 0
    if  k==0:
        return 1
    if s[m]=='0':
        return f(s,m+1,k)
    l=len(s)-m
    y=nCkpow(l-1,k)
    y+=(int(s[m])-1)*nCkpow(l-1,k-1)
    return y+f(s,m+1,k-1) def f(s,m,k):
    #print(m,k)
    if len(s)-m<k:
        return 0
    if  k==0:
        return 1
    if s[m]=='0':
        return f(s,m+1,k)
    l=len(s)-m
    y=nCkpow(l-1,k)
    y+=(int(s[m])-1)*nCkpow(l-1,k-1)
    return y+f(s,m+1,k-1) f def nCkpow(n,k):
    if n<k:
        return 0
    y=1
    for i in range(k):
        y*=n-i
        y//=i+1
        y*=9
    return y def nCkpow(n,k):
    if n<k:
        return 0
    y=1
    for i in range(k):
        y*=n-i
        y//=i+1
        y*=9
    return y nCkpow K=int(input()) int(input()) K
def nCkpow(n,k):
    if n<k:
        return 0
    y=1
    for i in range(k):
        y*=n-i
        y//=i+1
        y*=9
    return y
def f(s,m,k):
    #print(m,k)
    if len(s)-m<k:
        return 0
    if  k==0:
        return 1
    if s[m]=='0':
        return f(s,m+1,k)
    l=len(s)-m
    y=nCkpow(l-1,k)
    y+=(int(s[m])-1)*nCkpow(l-1,k-1)
    return y+f(s,m+1,k-1)
N=input()
K=int(input())
print(f(N,0,K))