// ROOT : DRAGON3012009
#include <bits/stdc++.h>
#define ll long long
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#define fi first
#define se second
#define M 1000000007
#define MAXN 1000001
#define GIOIHAN 1000001
#define BLOCK_SIZE 425
#define MAX_NODE 1001001
#define LOG 19
#define ALPHA_SIZE 26
#define NAME "check"
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end()); // dùng để nén sort mảng compare
using namespace std;
//**Variable**//
ll n ;
string l , r;
ll arr[MAXN];
//**Struct**//
ll dp[15][2][10][16][15*15*9+1];
//**Function**//
ll DP(ll pos ,ll lower , ll last , ll cnt , ll sum, string &x){
ll &cur = dp[pos][lower][last][cnt][sum] ;
if(x.size() == pos){
return cur =sum + cnt*cnt*last ;
}
if(cur!=-1 ) return cur;
cur = 0 ;
ll limit = lower ? x[pos] -'0' :9 ;
for(ll i = 0 ; i <=limit; i ++ ){
if(last == i) cur += DP(pos+1 , i == limit && lower , i , cnt+1, sum,x );
else cur+=DP(pos+1, i == limit && lower , i , 1 ,sum + cnt*cnt*last , x) ;
}
return cur ;
}
void init() {
cin>>l>>r;
}
ll check(string temp) {
ll t = 0 ;
ll cnt = 0 ;
char last = temp[0];
for(ll i = 0 ; i <= temp.size() ; i ++ ) {
if(temp[i] == last) {
cnt++ ;
}else{
t += cnt*cnt*(last-'0') ;
cnt=1 ;
last = temp[i] ;
}
}
return t;
}
ll F(string x){
memset(dp , - 1 , sizeof dp ) ;
return DP(0 , 1 , 0 , 0 , 0 , x) ;
}
void solve() {
cout<<F(r) - F(l) + check(l);
}
__ROOT__ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
fast;
init();
solve();
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgX19ST09UX18gaW50IG1haW4oKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgTSAxMDAwMDAwMDA3CiNkZWZpbmUgTUFYTiAxMDAwMDAxCiNkZWZpbmUgR0lPSUhBTiAxMDAwMDAxCiNkZWZpbmUgQkxPQ0tfU0laRSA0MjUKI2RlZmluZSBNQVhfTk9ERSAxMDAxMDAxCiNkZWZpbmUgTE9HIDE5CiNkZWZpbmUgQUxQSEFfU0laRSAyNgojZGVmaW5lIE5BTUUgImNoZWNrIgojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsgLy8gZMO5bmcgxJHhu4MgbsOpbiBzb3J0IG3huqNuZyBjb21wYXJlCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vKipWYXJpYWJsZSoqLy8KbGwgbiA7CnN0cmluZyBsICwgcjsKbGwgYXJyW01BWE5dOwovLyoqU3RydWN0KiovLwpsbCBkcFsxNV1bMl1bMTBdWzE2XVsxNSoxNSo5KzFdOwovLyoqRnVuY3Rpb24qKi8vCmxsIERQKGxsIHBvcyAsbGwgbG93ZXIgLCBsbCBsYXN0ICwgbGwgY250ICwgbGwgc3VtLCBzdHJpbmcgJngpewpsbCAmY3VyID0gZHBbcG9zXVtsb3dlcl1bbGFzdF1bY250XVtzdW1dIDsKaWYoeC5zaXplKCkgPT0gcG9zKXsKIHJldHVybiBjdXIgPXN1bSArIGNudCpjbnQqbGFzdCA7Cn0KaWYoY3VyIT0tMSApIHJldHVybiBjdXI7CmN1ciA9IDAgOwpsbCBsaW1pdCA9IGxvd2VyID8geFtwb3NdIC0nMCcgOjkgOwpmb3IobGwgaSA9IDAgOyBpIDw9bGltaXQ7IGkgKysgKXsKICAgIGlmKGxhc3QgPT0gaSkgY3VyICs9IERQKHBvcysxICwgaSA9PSBsaW1pdCAmJiBsb3dlciAsIGkgLCBjbnQrMSwgc3VtLHggKTsKICAgIGVsc2UgY3VyKz1EUChwb3MrMSwgaSA9PSBsaW1pdCAmJiBsb3dlciAsIGkgLCAxICxzdW0gKyBjbnQqY250Kmxhc3QgICwgeCkgOwp9CnJldHVybiBjdXIgOwp9CnZvaWQgaW5pdCgpIHsKICAgIGNpbj4+bD4+cjsKfQpsbCBjaGVjayhzdHJpbmcgdGVtcCkgewogICAgbGwgdCA9IDAgIDsKICAgIGxsIGNudCA9IDAgOwogICAgY2hhciBsYXN0ID0gdGVtcFswXTsKICAgIGZvcihsbCBpID0gMCAgOyBpIDw9IHRlbXAuc2l6ZSgpIDsgaSArKyApIHsKICAgICAgICBpZih0ZW1wW2ldID09IGxhc3QpIHsKICAgICAgICAgICAgY250KysgOwogICAgICAgIH1lbHNlewogICAgICAgIHQgKz0gY250KmNudCoobGFzdC0nMCcpIDsKICAgICAgICBjbnQ9MSA7CiAgICAgICAgbGFzdCA9IHRlbXBbaV0gOwogICAgICAgIH0KICAgIH0KICByZXR1cm4gdDsKfQpsbCBGKHN0cmluZyB4KXsKICAgIG1lbXNldChkcCAsIC0gMSAsIHNpemVvZiBkcCApIDsKcmV0dXJuIERQKDAgLCAxICwgMCAsIDAgLCAwICAsIHgpIDsKfQp2b2lkIHNvbHZlKCkgewpjb3V0PDxGKHIpIC0gRihsKSArIGNoZWNrKGwpOwp9CgpfX1JPT1RfXyB7CiAvLyAgIGZyZW9wZW4oTkFNRSIuaW5wIiAsICJyIiAsIHN0ZGluKTsKIC8vICAgIGZyZW9wZW4oTkFNRSIub3V0IiAsICJ3Iiwgc3Rkb3V0KSA7CiAgICBmYXN0OwogICAgaW5pdCgpOwogICAgc29sdmUoKTsKfQo=