数位DP
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
const int N=15;
LL a,b,o[N],f[N],num[N],ans1[N],ans2[N];
LL read()
{
LL x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return f*x;
}
void solve(LL x,LL *ans)
{
LL num[N],len=0;
while(x) {
num[++len]=x%10;
x/=10;
}
for(int i=len;i;i--) {
for(int j=0;j<=9;j++)
ans[j]+=f[i-1]*num[i];
for(int j=0;j<num[i];j++)
ans[j]+=o[i-1];
LL s=0;
for(int j=i-1;j;j--) s=s*10+num[j];
ans[num[i]]+=s+1;
ans[0]-=o[i-1];
}
}
int main()
{
a=read(); b=read();
o[0]=1;
for(int i=1;i<=15;i++) {
f[i]=f[i-1]*10+o[i-1];
o[i]=o[i-1]*10;
}
solve(a-1,ans1); solve(b,ans2);
for(int i=0;i<=9;i++)
cout<<ans2[i]-ans1[i]<<" ";
return 0;
}