import java.util.*;
public class Main{
static int []A=new int [10];
static int []B=new int [10];
static int getNumberOfK(int n,int k){
if(n==0)return 0;
List<Integer>list=new ArrayList();
while(n!=0){
list.add(n%10);
n/=10;
}
int res=0;
//这个循环从左向右、从右向左 都可以;是用来切分左右;
for(int i=0;i<list.size();i++){
int left=0;
int right=0;
int t=1;
//因为数据是倒着的,所以要逆序遍历;
//计算高位数的数值;
for(int j=list.size()-1;j>i;j--) left=left*10+list.get(j);
//计算低位数的数值;
for(int j=i-1;j>=0;j--){
right=right*10+list.get(j);
t*=10;
}
//1、高位计数;
//如果k=0;说面前面的取值高位不能为0; 只能是1~left;总共left-1个值;所以要-1;
res+=t*(k==0?(left-1):left);
//3、加上低位的数值;
//3.1 c==k 个数就是直接低位的数值+1
if(list.get(i)==k){
res+=right+1;
}
//如果c<k 个数就是当c去到k的时候 个数就是 0~999 也就是1000个 即t
else if(list.get(i)>k){
res+=t;
}
}
return res;
}
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
while(true){
String []ps=sc.nextLine().split(" ");
int a=Integer.parseInt(ps[0]);
int b=Integer.parseInt(ps[1]);
if(a==0&&b==0)break;
if(a>b){
int t=a;
a=b;
b=t;
}
for(int i=0;i<10;i++){
A[i]=getNumberOfK(a-1,i);
B[i]=getNumberOfK(b,i);
System.out.print(B[i]-A[i]+" ");
}
System.out.println();
}
}
}