#include<stdio.h>
int dsum[10][10];
long long int precomp[8]={45,900,13500,180000,2250000,27000000,315000000,3600000000};
long long int func(int start,int end){
if ((start==0&&((end+1)%10==0))) return precomp[digitsin(end)-1];
if (start==end) return digsum(start);
if (start > end) return 0;
int d = digitsin(end);
if (d==1) return dsum[start][end];
long long int sum =0;
int fs = first(start,d);
int fe = first(end,d);
int e1 = (fs+1)*(int)power((int)(10),(int)(d-1));
int os = otf(start,d);
int oe = otf(end,d);
int oee = otf((e1-1),d);
if (fs!=fe){
sum+=(fs*(e1-start));
sum+=(func(os,oee));
}
else{
sum+=((end-start+1)*fs);
sum+=func(os,oe);
}
sum+=func(e1,end);
return sum;
}
int main(){
init();
int a,b;
if (a
==-1&&b
==-1) exit(0); main();
return 0;
}
int digitsin(int n){
int d=0;
while (n){
n/=10;
d++;
}
return d;
}
int first(int n,int d){
return (n/power(10,d-1));
}
int otf(int n,int d){
return (n%(int)power((int)10,(int)(d-1)));
}
int init(){
int i,j;
int sum;
for (i=0;i<10;i++){
sum = 0;
for (j=i;j<10;j++){
sum+=j;
dsum[i][j] = sum;
}
}
return 0;
}
int digsum(int n){
int sum = 0;
while (n){
sum+=(n%10);
n/=10;
}
return sum;
}
int power(int a,int b){
int i,res=1;
for (i=0;i<b;i++){
res*=a;
}
return res;
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IGRzdW1bMTBdWzEwXTsKbG9uZyBsb25nIGludCBwcmVjb21wWzhdPXs0NSw5MDAsMTM1MDAsMTgwMDAwLDIyNTAwMDAsMjcwMDAwMDAsMzE1MDAwMDAwLDM2MDAwMDAwMDB9Owpsb25nIGxvbmcgaW50IGZ1bmMoaW50IHN0YXJ0LGludCBlbmQpewogICAgaWYgKChzdGFydD09MCYmKChlbmQrMSklMTA9PTApKSkgcmV0dXJuIHByZWNvbXBbZGlnaXRzaW4oZW5kKS0xXTsKICAgIGlmIChzdGFydD09ZW5kKSByZXR1cm4gZGlnc3VtKHN0YXJ0KTsKICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIDA7CiAgICBpbnQgZCA9IGRpZ2l0c2luKGVuZCk7CiAgICBpZiAoZD09MSkgcmV0dXJuIGRzdW1bc3RhcnRdW2VuZF07CiAgICBsb25nIGxvbmcgaW50IHN1bSA9MDsKICAgIGludCBmcyA9IGZpcnN0KHN0YXJ0LGQpOwogICAgaW50IGZlID0gZmlyc3QoZW5kLGQpOwogICAgaW50IGUxID0gKGZzKzEpKihpbnQpcG93ZXIoKGludCkoMTApLChpbnQpKGQtMSkpOwogICAgaW50IG9zID0gb3RmKHN0YXJ0LGQpOwogICAgaW50IG9lID0gb3RmKGVuZCxkKTsKICAgIGludCBvZWUgPSBvdGYoKGUxLTEpLGQpOwogICAgaWYgKGZzIT1mZSl7CiAgICAgICAgc3VtKz0oZnMqKGUxLXN0YXJ0KSk7CiAgICAgICAgc3VtKz0oZnVuYyhvcyxvZWUpKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgc3VtKz0oKGVuZC1zdGFydCsxKSpmcyk7CiAgICAgICAgc3VtKz1mdW5jKG9zLG9lKTsKICAgIH0KICAgIHN1bSs9ZnVuYyhlMSxlbmQpOwogICAgcmV0dXJuIHN1bTsKfQoKaW50IG1haW4oKXsKICAgIGluaXQoKTsKICAgIGludCBhLGI7CiAgICBzY2FuZigiJWQlZCIsJmEsJmIpOwogICAgaWYgKGE9PS0xJiZiPT0tMSkgZXhpdCgwKTsKICAgIHByaW50ZigiJWxsZFxuIixmdW5jKGEsYikpOwogICAgbWFpbigpOwogICAgcmV0dXJuIDA7Cn0KCmludCBkaWdpdHNpbihpbnQgbil7CiAgICBpbnQgZD0wOwogICAgd2hpbGUgKG4pewogICAgICAgIG4vPTEwOwogICAgICAgIGQrKzsKICAgIH0KICAgIHJldHVybiBkOwp9CgppbnQgZmlyc3QoaW50IG4saW50IGQpewogICAgcmV0dXJuIChuL3Bvd2VyKDEwLGQtMSkpOwp9CgppbnQgb3RmKGludCBuLGludCBkKXsKICAgIHJldHVybiAobiUoaW50KXBvd2VyKChpbnQpMTAsKGludCkoZC0xKSkpOwp9CgppbnQgaW5pdCgpewogICAgaW50IGksajsKICAgIGludCBzdW07CiAgICBmb3IgKGk9MDtpPDEwO2krKyl7CiAgICAgICAgc3VtID0gMDsKICAgICAgICBmb3IgKGo9aTtqPDEwO2orKyl7CiAgICAgICAgICAgIHN1bSs9ajsKICAgICAgICAgICAgZHN1bVtpXVtqXSA9IHN1bTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQoKaW50IGRpZ3N1bShpbnQgbil7CiAgICBpbnQgc3VtID0gMDsKICAgIHdoaWxlIChuKXsKICAgICAgICBzdW0rPShuJTEwKTsKICAgICAgICBuLz0xMDsKICAgIH0KICAgIHJldHVybiBzdW07Cn0KCmludCBwb3dlcihpbnQgYSxpbnQgYil7CiAgICBpbnQgaSxyZXM9MTsKICAgIGZvciAoaT0wO2k8YjtpKyspewogICAgICAgIHJlcyo9YTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0K