//算法思想:将字典序视做一个树,寻找m次则循环m次来找寻结果
//若是在这个区间内则M在这个区间内查找,不然让梯度乘以10向上查找,直到找寻一个区间内,让i每次加1一个一个查找
//第一步while循环是判断是否查到这个位置,第二次则是写出num在这个区间内有多少个数
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long n,m;
cin>>n>>m;
long i=1;
m--;//若是要查找第一个数字那么就是1
while(m!=0)
{
long low=i,high=i+1;
long num=0;
while(low<=n)//这里是能够取等号的
{
num+=min(n+1,high)-low;
low*=10;
high*=10;
}
if(num>m)//若是m>num即数字不在这个区间内,i每次*10向上寻找
{
i*=10;
m--;//例如:10和100是i*10后的不一样结果,可是二者实际上是相邻的,也就是只须要作m--就能够了
}
else//若是在这里区间内则每次i自增1来寻找
{
m-=num;
i++;
}
}
cout<<i<<endl;
return 0;
}