#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <map>
#include <ctime>
#include <queue>
#define rint register int
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int mod=1e9+7;
const int MOD=76543;
ll n; int K;
int t[15],he;
ll num[15006],cnt[15006]; int con;
struct HAHSHSHS
{
int first[MOD];
int an[42006];ll ke[42006];
int nt[42006],e,tt,i;
void clear()
{
mem(first,-1);
}
int ifif(ll x)
{
tt=x%MOD;
for(i=first[tt];i!=-1;i=nt[i])
if(ke[i]==x)
return an[i];
return -1;
}
void add(ll x,int ans)
{
tt=x%MOD;
an[e]=ans;
ke[e]=x;
nt[e]=first[tt];
first[tt]=e++;
}
}H;
struct son
{
int x,y; ll v;
son(){}
son(int _x,int _y)
{
x=_x; y=_y;
v=1LL*cnt[x]*cnt[y];
}
bool friend operator < (son a,son b)
{
return a.v<b.v;
}
};
priority_queue<son> q;
bool flag[12006][12006];
bool cmp(ll a,ll b)
{
return a>b;
}
void dfs(int order,int las,ll now)
{
if(!now||now>n) return ;
if(H.ifif(now)==-1)
++con,num[con]=now,H.add(now,con);
if(!order) return ;
int i;
for(i=las;i<=9;++i)
dfs(order-1,i,now*i);
}
ll f[15][2][20006];
ll dp(int order,int limit,int lead,int id)
{
if(id<0) return 0;
if(!order)
{
if(lead) return 0;
return id==1;
}
if( limit==10 && f[order][lead][id]!=-1 )
return f[order][lead][id];
ll an=0; int i;
if(lead)
an+=dp(order-1,10,1,id);
for(i=1;i<limit;++i)
if(num[id]%i==0)
an+=dp(order-1,10,0,H.ifif(num[id]/i));
if(limit&&limit!=10&&num[id]%limit==0)
an+=dp(order-1,t[order-1],0,H.ifif(num[id]/limit));
if(limit==10)
f[order][lead][id]=an;
return an;
}
ll work()
{
rint i,j; ll an=0;
ll x=n;
while(x)
{
t[++he]=x%10;
x/=10;
}
dfs(he,1,1);
mem(f,-1);
for(i=1;i<=con;++i)
cnt[i]=dp(he,t[he],1,i);
sort(cnt+1,cnt+1+con,cmp);
q.push(son(1,1));
son tt;
while(K&&!q.empty())
{
tt=q.top(); q.pop();
if(flag[tt.x][tt.y]) continue;
flag[tt.x][tt.y]=1;
an=(an+tt.v)%mod;
q.push(son(tt.x+1,tt.y));
q.push(son(tt.x,tt.y+1));
--K;
}
return an%mod;
}
int main(){
//freopen("in.in","r",stdin);
//freopen("out.out","w",stdout);
H.clear();
scanf("%lld%d",&n,&K);
cout<<work();
}