def f(N,K):
    n=len(str(N))
    if n==1:
        if K==1:
            return N
        else:
            return 0
    elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
    elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
    else:
        if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2)
N=int(input())
K=int(input())
print(int(f(N,K))) def f(N,K):
    n=len(str(N))
    if n==1:
        if K==1:
            return N
        else:
            return 0
    elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
    elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
    else:
        if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) f n=len(str(N)) n len(str(N)) len str(N) str N if n==1:
        if K==1:
            return N
        else:
            return 0
    elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
    elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
    else:
        if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) n==1 n 1 if K==1:
            return N
        else:
            return 0
     K==1 K 1 return N N return 0 0 elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
     n==2 n 2 if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
     K==1 K 1 return 9+N//10 9+N//10 9 N//10 N 10 elif K==2:
            return N-9-N//10
         K==2 K 2 return N-9-N//10 N-9-N//10 N-9 N 9 N//10 N 10 return 0 0 elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
     n==3 n 3 if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
     K==1 K 1 return 18+N//100 18+N//100 18 N//100 N 100 elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
         K==2 K 2 return 81+18*((N//100)-1)+f(N%100,1) 81+18*((N//100)-1)+f(N%100,1) 81+18*((N//100)-1) 81 18*((N//100)-1) 18 (N//100)-1 N//100 N 100 1 f(N%100,1) f N%100 N 100 1 return 81*((N//100)-1)+f(N%100,2) 81*((N//100)-1)+f(N%100,2) 81*((N//100)-1) 81 (N//100)-1 N//100 N 100 1 f(N%100,2) f N%100 N 100 2 if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) K==1 K 1 return 9*(n-1)+N//(10**(n-1)) 9*(n-1)+N//(10**(n-1)) 9*(n-1) 9 n-1 n 1 N//(10**(n-1)) N 10**(n-1) 10 n-1 n 1 elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
         K==2 K 2 return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1) 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1) 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1) 81*(n-1)*(n-2)/2 81*(n-1)*(n-2) 81*(n-1) 81 n-1 n 1 n-2 n 2 2 9*(n-1)*((N//((10**(n-1))))-1) 9*(n-1) 9 n-1 n 1 (N//((10**(n-1))))-1 N//((10**(n-1))) N 10**(n-1) 10 n-1 n 1 1 f(N%(10**(n-1)),1) f N%(10**(n-1)) N 10**(n-1) 10 n-1 n 1 1 return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2 243*(n**3-6*(n**2)+11*n-6)/2 243*(n**3-6*(n**2)+11*n-6) 243 n**3-6*(n**2)+11*n-6 n**3-6*(n**2)+11*n n**3-6*(n**2) n**3 n 3 6*(n**2) 6 n**2 n 2 11*n 11 n 6 2 81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2 81*(n-1)*(n-2)*((N//(10**(n-1)))-1) 81*(n-1)*(n-2) 81*(n-1) 81 n-1 n 1 n-2 n 2 (N//(10**(n-1)))-1 N//(10**(n-1)) N 10**(n-1) 10 n-1 n 1 1 2 f(N%(10**(n-1)),2) f N%(10**(n-1)) N 10**(n-1) 10 n-1 n 1 2 N N K K N=int(input()) N int(input()) int input() input K=int(input()) K int(input()) int input() input print(int(f(N,K))) print int(f(N,K)) int f(N,K) f N K def f(N,K):
    n=len(str(N))
    if n==1:
        if K==1:
            return N
        else:
            return 0
    elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
    elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
    else:
        if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) def f(N,K):
    n=len(str(N))
    if n==1:
        if K==1:
            return N
        else:
            return 0
    elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
    elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
    else:
        if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2) f N=int(input()) int(input()) N K=int(input()) int(input()) K
def f(N,K):
    n=len(str(N))
    if n==1:
        if K==1:
            return N
        else:
            return 0
    elif n==2:
        if K==1:
            return 9+N//10
        elif K==2:
            return N-9-N//10
        else:
            return 0
    elif n==3:
        if K==1:
            return 18+N//100
        elif K==2:
            return 81+18*((N//100)-1)+f(N%100,1)
        else:
            return 81*((N//100)-1)+f(N%100,2)
    else:
        if K==1:
            return 9*(n-1)+N//(10**(n-1))
        elif K==2:
            return 81*(n-1)*(n-2)/2+9*(n-1)*((N//((10**(n-1))))-1)+f(N%(10**(n-1)),1)
        else:
            return 243*(n**3-6*(n**2)+11*n-6)/2+81*(n-1)*(n-2)*((N//(10**(n-1)))-1)/2+f(N%(10**(n-1)),2)
N=int(input())
K=int(input())
print(int(f(N,K)))