#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
using namespace std;
#define fori(i, n) for (int i=0; i<n; ++i)
#define forr(i, a, n) for (int i=a; i<=n; ++i)
#define tipo unsigned long long
typedef vector<int> vi;
typedef vector<vi> vtrio;
typedef pair<int, int> par;
tipo dp[11][11], fim[11], sub[11], counted[2][11];
tipo res;
int num(char c){
return ((c - '0') % 48);
}
tipo count(char numero[], int comeco){
int t = strlen(numero);
if (comeco >= t) return 0;
int d = t - comeco;
int p = num(numero[comeco]);
for (int i = 1; i<p; i++)
fim[i] += pow (10, d-1);
tipo qt_zeros = dp[0][d]/9 - dp[0][d-1];
//printf("|%llu|\n", qt_zeros);
fim[0] += qt_zeros*(p-1);
for (int i = 1; i < 10; i++) fim[i] += (p-1)*counted[1][d];
if (d>1){
char resto[d-1];
int start = comeco+1;
if (numero[start]!='0'){
fim[0] += p*pow(10,d-2);
int k =0;
for (int i = start; i<t; i++) resto[k++] = numero[i];
resto[k] = 0;
fim[p] += atoi(resto)+1;
}else{
int n_zeros = 0;
while(numero[start]=='0'){ n_zeros++; start++;}
int k =0;
for (int i = start; i<t; i++) resto[k++] = numero[i];
resto[k] = 0;
fim[0] += n_zeros* atoi(resto) +n_zeros;
fim[p] += atoi(resto)+1;
}
return count(numero, start);
}else
fim[p]++;
return 0;
}
void memo(){
for (int d = 2; d < 10; d++){
for (int i = 1; i < d; i++)
dp[0][d] += pow(10, d-(i+1)) * pow(9, i-1);
dp[0][d] *= 9;
dp[0][d] += dp[0][d-1];
}
for (int d = 2; d <= 9; d++){
tipo below = 0;
for (int i = 1; i < d; i++)
below += pow(10, d-i-1) * pow(9, i-1);
counted[1][d] = below;
for (int i = 1; i<10; i++)
dp[i][d] += 9*below + pow(10,d-1) + dp[i][d-1];
}
}
int main(){
memset(dp, 0, sizeof dp);
memset(counted, 0, sizeof counted);
for (int n = 1; n<10; n++)
dp[n][1] = 1;
memo();
while(1){
char a[20], b[20];
scanf("%s %s", a, b);
if (a[0]=='0') break;
else{
count(b,0);
for (int i =0; i < strlen(a); i++) fim[num(a[i])]++;
for (int i = 0; i < 10; i++){
sub[i] = fim[i] + dp[i][strlen(b)-1];
fim[i]=0;
}
count(a,0);
for (int i=0; i<10;i++){
sub[i] -= (fim[i] + dp[i][strlen(a)-1]);
fim[i] = 0;
if (i==0)
printf("%llu",sub[0]);
else
printf(" %llu",sub[i]);
}
printf("\n");
}
}
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8bnVtZXJpYz4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxjc3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZm9yaShpLCBuKSBmb3IgKGludCBpPTA7IGk8bjsgKytpKQojZGVmaW5lIGZvcnIoaSwgYSwgbikgZm9yIChpbnQgaT1hOyBpPD1uOyArK2kpCgojZGVmaW5lIHRpcG8gdW5zaWduZWQgbG9uZyBsb25nCgp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnRyaW87CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGFyOwoKdGlwbyBkcFsxMV1bMTFdLCBmaW1bMTFdLCBzdWJbMTFdLCBjb3VudGVkWzJdWzExXTsKdGlwbyByZXM7CgoKaW50IG51bShjaGFyIGMpewogICAgcmV0dXJuICgoYyAtICcwJykgJSA0OCk7Cn0KCnRpcG8gY291bnQoY2hhciBudW1lcm9bXSwgaW50IGNvbWVjbyl7CiAgIGludCB0ID0gc3RybGVuKG51bWVybyk7CiAgIGlmIChjb21lY28gPj0gdCkgcmV0dXJuIDA7CiAgIGludCBkID0gdCAtIGNvbWVjbzsKICAgaW50IHAgPSBudW0obnVtZXJvW2NvbWVjb10pOwoKICAgZm9yIChpbnQgaSA9IDE7IGk8cDsgaSsrKQogICAgIGZpbVtpXSArPSBwb3cgKDEwLCBkLTEpOwogICAKICAgdGlwbyBxdF96ZXJvcyA9IGRwWzBdW2RdLzkgLSBkcFswXVtkLTFdOwogICAvL3ByaW50ZigifCVsbHV8XG4iLCBxdF96ZXJvcyk7CiAgIGZpbVswXSArPSBxdF96ZXJvcyoocC0xKTsKCiAgIGZvciAoaW50IGkgPSAxOyBpIDwgMTA7IGkrKykgZmltW2ldICs9IChwLTEpKmNvdW50ZWRbMV1bZF07CiAgIAogICBpZiAoZD4xKXsKICAgICBjaGFyIHJlc3RvW2QtMV07CiAgICAgaW50IHN0YXJ0ID0gY29tZWNvKzE7CiAgICAgCiAgICAgaWYgKG51bWVyb1tzdGFydF0hPScwJyl7CiAgICAgICBmaW1bMF0gKz0gcCpwb3coMTAsZC0yKTsKICAgICAgIGludCBrID0wOwogICAgICAgZm9yIChpbnQgaSA9IHN0YXJ0OyBpPHQ7IGkrKykgcmVzdG9baysrXSA9IG51bWVyb1tpXTsJCiAgICAgICByZXN0b1trXSA9IDA7CiAgICAgICBmaW1bcF0gKz0gYXRvaShyZXN0bykrMTsKICAgICB9ZWxzZXsKICAgICAJaW50IG5femVyb3MgPSAwOwogICAgIAl3aGlsZShudW1lcm9bc3RhcnRdPT0nMCcpeyBuX3plcm9zKys7IHN0YXJ0Kys7fQogICAgIAlpbnQgayA9MDsKICAgICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGk8dDsgaSsrKSByZXN0b1trKytdID0gbnVtZXJvW2ldOwkKICAgICAgICByZXN0b1trXSA9IDA7CiAgICAgCWZpbVswXSArPSBuX3plcm9zKiBhdG9pKHJlc3RvKSArbl96ZXJvczsKICAgICAJZmltW3BdICs9IGF0b2kocmVzdG8pKzE7CiAgICAgfQogICAgIHJldHVybiBjb3VudChudW1lcm8sIHN0YXJ0KTsKICAgfWVsc2UKICAgIGZpbVtwXSsrOwogICAKICAgcmV0dXJuIDA7Cn0KCnZvaWQgbWVtbygpewogCiBmb3IgKGludCBkID0gMjsgZCA8IDEwOyBkKyspewogIGZvciAoaW50IGkgPSAxOyBpIDwgZDsgaSsrKQogICBkcFswXVtkXSArPSBwb3coMTAsIGQtKGkrMSkpICogcG93KDksIGktMSk7CiAgZHBbMF1bZF0gKj0gOTsKICBkcFswXVtkXSArPSBkcFswXVtkLTFdOwogfQoKIGZvciAoaW50IGQgPSAyOyBkIDw9IDk7IGQrKyl7CiAJdGlwbyBiZWxvdyA9IDA7CiAJZm9yIChpbnQgaSA9IDE7IGkgPCBkOyBpKyspCiAgICAgIGJlbG93ICs9IHBvdygxMCwgZC1pLTEpICogcG93KDksIGktMSk7CiAgICBjb3VudGVkWzFdW2RdID0gYmVsb3c7CiAJZm9yIChpbnQgaSA9IDE7IGk8MTA7IGkrKykKIAkJZHBbaV1bZF0gKz0gOSpiZWxvdyArIHBvdygxMCxkLTEpICsgZHBbaV1bZC0xXTsKIH0KIAkKfQoKaW50IG1haW4oKXsKIG1lbXNldChkcCwgMCwgc2l6ZW9mIGRwKTsKIG1lbXNldChjb3VudGVkLCAwLCBzaXplb2YgY291bnRlZCk7CiBmb3IgKGludCBuID0gMTsgbjwxMDsgbisrKQogIGRwW25dWzFdID0gMTsKCiBtZW1vKCk7CiB3aGlsZSgxKXsKICBjaGFyIGFbMjBdLCBiWzIwXTsKICBzY2FuZigiJXMgJXMiLCBhLCBiKTsKCiAgaWYgKGFbMF09PScwJykgYnJlYWs7CiAgZWxzZXsKICAgY291bnQoYiwwKTsKICAgZm9yIChpbnQgaSA9MDsgaSA8IHN0cmxlbihhKTsgaSsrKSBmaW1bbnVtKGFbaV0pXSsrOwogICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspewogICAgc3ViW2ldID0gZmltW2ldICsgZHBbaV1bc3RybGVuKGIpLTFdOwogICAgZmltW2ldPTA7CiAgIH0KCiAgIGNvdW50KGEsMCk7CiAgIAogICBmb3IgKGludCBpPTA7IGk8MTA7aSsrKXsKICAgIHN1YltpXSAtPSAoZmltW2ldICsgZHBbaV1bc3RybGVuKGEpLTFdKTsKICAgIGZpbVtpXSA9IDA7CiAgICBpZiAoaT09MCkKICAgICBwcmludGYoIiVsbHUiLHN1YlswXSk7CiAgICBlbHNlCiAgICAgcHJpbnRmKCIgJWxsdSIsc3ViW2ldKTsgCiAgIH0KICAgcHJpbnRmKCJcbiIpOwogIH0KIH0KIHJldHVybiAwOwp9