#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long a , b;
long long dp[20][20],num[20];
long long dfs(int pos,bool limit,bool lead,int dig,long long sum)
{
long long ans=0;
if (pos==0) return sum;
if(!limit&&lead&&dp[pos][sum]!=-1) return dp[pos][sum];
int up=9;
if(limit) up=num[pos];
for(int j=0;j<=up;j++)
ans+=dfs(pos-1, (j==up)&&limit , lead||j , dig , sum+((j||lead)&&(j==dig)) );
if(!limit&&lead) dp[pos][sum]=ans;
return ans;
}
long long work(long long x,int d)
{
memset(dp,-1,sizeof(dp));
int len=0;
while(x)
{
num[++len]=x%10;
x/=10;
}
return dfs(len,1,0,d,0);
}
int main()
{
cin>>a>>b;
for(int i=0;i<=9;i++)
{
if(i!=9)cout<<work(b,i)-work(a-1,i)<<" ";
else cout<<work(b,i)-work(a-1,i);
}
cout << endl;
for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
cout << dp[i][j] << " ";
}
cout << endl;
}
}