#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define lli long long int
#define ulli unsigned long long
#define freo(task) if(fopen(task".inp", "r")){ freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); }
#define pb push_back
#define bit(x, i) ((x >> i) & 1)
#define FOR(i, a, b) for(int i=(a); i<=(b); i++)
#define FORD(i, a, b) for(int i=(a); i>=(b); i--)
#define oo 1e18
#define debug cout<<"VUDEPTRAI\n";
using namespace std;
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
ll rand(ll l, ll r) { assert(l <= r); return uniform_int_distribution<ll>(l, r)(rd); }
int a, b;
lli dp[20][180][2];
void get(lli x, vector<int> &digit){
while(x){
digit.pb(x%10);
x/=10;
}
}
lli digitsolve(int i, int sum, bool tight, vector<int> &digit){
if(i<0)
return sum;
if(!tight && dp[i][sum][tight]!=-1)
return dp[i][sum][tight];
lli ans=0;
int maxk=(tight ? digit[i] : 9);
FOR(k, 0, maxk){
bool newtight=tight && (k==maxk);
ans+=digitsolve(i-1, sum+k, newtight, digit);
}
if(!tight)
dp[i][sum][tight]=ans;
return ans;
}
lli solve(int a, int b){
memset(dp, -1, sizeof(dp));
vector<int> digitA;
get(a-1, digitA);
vector<int> digitB;
get(b, digitB);
return digitsolve(digitB.size()-1, 0, 1, digitB)-digitsolve(digitA.size()-1, 0, 1, digitA);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
// freo("");
while(cin>>a>>b){
if(a==-1 && b==-1)
return 0;
cout<<solve(a, b)<<'\n';
}
// cerr << "\n" << 1.0 * clock() / CLOCKS_PER_SEC << "s ";
return 0;
}
/*
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBsbGkgbG9uZyBsb25nIGludAojZGVmaW5lIHVsbGkgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZnJlbyh0YXNrKSBpZihmb3Blbih0YXNrIi5pbnAiLCAiciIpKXsgZnJlb3Blbih0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7IH0KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBiaXQoeCwgaSkgKCh4ID4+IGkpICYgMSkKI2RlZmluZSBGT1IoaSwgYSwgYikgZm9yKGludCBpPShhKTsgaTw9KGIpOyBpKyspCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IoaW50IGk9KGEpOyBpPj0oYik7IGktLSkKI2RlZmluZSBvbyAxZTE4CiNkZWZpbmUgZGVidWcgY291dDw8IlZVREVQVFJBSVxuIjsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbXQxOTkzNyByZChjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwpsbCByYW5kKGxsIGwsIGxsIHIpIHsgYXNzZXJ0KGwgPD0gcik7IHJldHVybiB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248bGw+KGwsIHIpKHJkKTsgfQppbnQgYSwgYjsKbGxpIGRwWzIwXVsxODBdWzJdOwp2b2lkIGdldChsbGkgeCwgdmVjdG9yPGludD4gJmRpZ2l0KXsKICAgIHdoaWxlKHgpewogICAgICAgIGRpZ2l0LnBiKHglMTApOwogICAgICAgIHgvPTEwOwogICAgfQp9CmxsaSBkaWdpdHNvbHZlKGludCBpLCBpbnQgc3VtLCBib29sIHRpZ2h0LCB2ZWN0b3I8aW50PiAmZGlnaXQpewogICAgaWYoaTwwKQogICAgICAgIHJldHVybiBzdW07CiAgICBpZighdGlnaHQgJiYgZHBbaV1bc3VtXVt0aWdodF0hPS0xKQogICAgICAgIHJldHVybiBkcFtpXVtzdW1dW3RpZ2h0XTsKICAgIGxsaSBhbnM9MDsKICAgIGludCBtYXhrPSh0aWdodCA/IGRpZ2l0W2ldIDogOSk7CiAgICBGT1IoaywgMCwgbWF4ayl7CiAgICAgICAgYm9vbCBuZXd0aWdodD10aWdodCAmJiAoaz09bWF4ayk7CiAgICAgICAgYW5zKz1kaWdpdHNvbHZlKGktMSwgc3VtK2ssIG5ld3RpZ2h0LCBkaWdpdCk7CiAgICB9CiAgICBpZighdGlnaHQpCiAgICAgICAgZHBbaV1bc3VtXVt0aWdodF09YW5zOwogICAgcmV0dXJuIGFuczsKfQpsbGkgc29sdmUoaW50IGEsIGludCBiKXsKICAgIG1lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwogICAgdmVjdG9yPGludD4gZGlnaXRBOwogICAgZ2V0KGEtMSwgZGlnaXRBKTsKICAgIHZlY3RvcjxpbnQ+IGRpZ2l0QjsKICAgIGdldChiLCBkaWdpdEIpOwogICAgcmV0dXJuIGRpZ2l0c29sdmUoZGlnaXRCLnNpemUoKS0xLCAwLCAxLCBkaWdpdEIpLWRpZ2l0c29sdmUoZGlnaXRBLnNpemUoKS0xLCAwLCAxLCBkaWdpdEEpOwp9CmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwovLyAgICBmcmVvKCIiKTsKICAgIHdoaWxlKGNpbj4+YT4+Yil7CiAgICAgICAgaWYoYT09LTEgJiYgYj09LTEpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGNvdXQ8PHNvbHZlKGEsIGIpPDwnXG4nOwogICAgfQovLyAgICBjZXJyIDw8ICJcbiIgPDwgMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICJzICI7CiAgICByZXR1cm4gMDsKfQovKgoKCgoqLwo=