#include <bits/stdc++.h>
using namespace std ;
#define ll long long
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fir first
#define sec second
#define piint pair < int , int >
#define FOR( i , a , b ) for (int i = (a) , _b = (b) ; i <= _b ; i ++ )
#define pb push_back
#define str string
#define ALL(a) (a).begin() , (a).end()
#define rep( i , a , b) for (int i = (a) ; i < (b) ; i ++ )
#define ld long double
const int maxn = 1e3;
#define debug 0
#define oo (ll)(1e18)
ll dp[23][2][2]['z' + 3 ]['z' +3 ] ;
str A , B ;
ll dfs ( int i , bool ok_l , bool ok_r , int x , int y , int len ){
if ( i == len ) return 1 ;
if (dp[i][ok_l][ok_r][x][y] != -1){
return dp[i][ok_l][ok_r][x][y] ;
}
char low = ok_l ? ( '0' ) : A[i] ;
char high = ok_r ? ('9') : B[i] ;
low = max ( ( i == 0 )? '1' : '0' , low );
ll res = 0 ;
FOR ( c , low , high ) {
if ( i > 0 && c == y ) continue ;
if ( i > 1 && c == x ) continue ;
res += dfs ( i + 1 , ok_l | ( c > A[i]) , ok_r | ( c < B[i]) , y , c , len ) ;
}
return dp[i][ok_l][ok_r][x][y] = res ;
// if ( i > )
}
void input(){
ll a , b ; cin >> a >> b ;
A = to_string ( a ) ;
B = to_string ( b ) ;
str OLD = A ;
ll ans = 0 ;
FOR ( len , A.size() , B.size()){
memset ( dp , -1 , sizeof(dp)) ;
A = OLD ;
while ( A.size() < len ) {
A = '0' + A ;
}
if ( len < B.size()) ans += dfs ( 0 , 0 , 1 , 1 , 1 , len ) ;
else ans += dfs ( 0 , 0 , 0 , 1 , 1 , len ) ;
}
cout << ans ;
}
#define name "TASK"
int main(){
fast
if(fopen(name".INP","r")) {
freopen (name".INP","r",stdin);
freopen (name".OUT","w",stdout);
}
input() ;
cerr << "\nTIME: = " << (1.0*clock())/CLOCKS_PER_SEC << '\n';
return(0) ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQgOyAKCgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGZpciBmaXJzdCAKI2RlZmluZSBzZWMgc2Vjb25kIAojZGVmaW5lIHBpaW50IHBhaXIgPCBpbnQgLCBpbnQgPgojZGVmaW5lIEZPUiggaSAsIGEgLCBiICkgZm9yIChpbnQgaSA9IChhKSAsIF9iID0gKGIpIDsgaSA8PSBfYiA7IGkgKysgKSAgCiNkZWZpbmUgcGIgcHVzaF9iYWNrIAojZGVmaW5lIHN0ciBzdHJpbmcgCiNkZWZpbmUgQUxMKGEpIChhKS5iZWdpbigpICwgKGEpLmVuZCgpIAojZGVmaW5lIHJlcCggaSAsIGEgLCBiKSBmb3IgKGludCBpID0gKGEpIDsgaSA8IChiKSA7IGkgKysgKQojZGVmaW5lIGxkIGxvbmcgZG91YmxlCmNvbnN0IGludCBtYXhuID0gMWUzOwojZGVmaW5lIGRlYnVnIDAKI2RlZmluZSBvbyAobGwpKDFlMTgpCgpsbCBkcFsyM11bMl1bMl1bJ3onICsgMyBdWyd6JyArMyAgXSA7CnN0ciBBICwgQiA7CgoKbGwgZGZzICggaW50IGkgLCBib29sIG9rX2wgLCBib29sIG9rX3IgLCBpbnQgeCAsIGludCB5ICwgaW50IGxlbiApewoKCWlmICggaSA9PSBsZW4gKSByZXR1cm4gMSA7CglpZiAoZHBbaV1bb2tfbF1bb2tfcl1beF1beV0gIT0gLTEpewoJCXJldHVybiBkcFtpXVtva19sXVtva19yXVt4XVt5XSA7Cgl9CgoJY2hhciBsb3cgPSBva19sID8gKCAnMCcgKSA6IEFbaV0gOwoJY2hhciBoaWdoID0gb2tfciA/ICgnOScpIDogQltpXSA7Cglsb3cgPSBtYXggKCAoIGkgPT0gMCApPyAnMScgOiAnMCcgLCBsb3cgKTsKCWxsIHJlcyA9IDAgOwoJRk9SICggYyAsIGxvdyAsIGhpZ2ggKSB7CgkJCgoJCWlmICggaSA+IDAgJiYgYyA9PSB5ICkgY29udGludWUgOwoJCWlmICggaSA+IDEgJiYgYyA9PSB4ICkgY29udGludWUgOwoJCXJlcyArPSBkZnMgKCBpICsgMSAsIG9rX2wgfCAoIGMgPiBBW2ldKSAsIG9rX3IgfCAoIGMgPCBCW2ldKSAsIHkgLCBjICwgbGVuICkgOyAKCX0KCXJldHVybiBkcFtpXVtva19sXVtva19yXVt4XVt5XSA9IHJlcyA7CgoJLy8gaWYgKCBpID4gKQp9Cgp2b2lkIGlucHV0KCl7CgoJbGwgYSAsIGIgOyBjaW4gPj4gYSA+PiBiIDsKCglBID0gdG9fc3RyaW5nICggYSApIDsKCUIgPSB0b19zdHJpbmcgKCBiICkgOwoJc3RyIE9MRCA9IEEgOwoJbGwgYW5zID0gMCA7CgoJRk9SICggbGVuICwgQS5zaXplKCkgLCBCLnNpemUoKSl7CgkJbWVtc2V0ICggZHAgLCAtMSAsIHNpemVvZihkcCkpIDsKCQlBID0gT0xEIDsKCgkJd2hpbGUgKCBBLnNpemUoKSA8IGxlbiApIHsKCgkJCUEgPSAnMCcgKyBBIDsKCgkJfQoJCWlmICggbGVuIDwgQi5zaXplKCkpICBhbnMgKz0gZGZzICggMCAsIDAgLCAxICwgMSAsIDEgLCBsZW4gKSA7CgkJZWxzZSBhbnMgKz0gZGZzICggMCAsIDAgLCAwICwgMSAsIDEgLCBsZW4gKSA7Cgl9Cgljb3V0IDw8IGFucyA7Cgp9CiNkZWZpbmUgbmFtZSAiVEFTSyIgCmludCBtYWluKCl7CiAgICBmYXN0IAogICAgaWYoZm9wZW4obmFtZSIuSU5QIiwiciIpKSB7CiAgICAgICAgZnJlb3BlbiAobmFtZSIuSU5QIiwiciIsc3RkaW4pOwogICAgICAgIGZyZW9wZW4gKG5hbWUiLk9VVCIsInciLHN0ZG91dCk7CiAgICB9CiAgICBpbnB1dCgpIDsKICAgIGNlcnIgPDwgIlxuVElNRTogPSAiIDw8ICgxLjAqY2xvY2soKSkvQ0xPQ0tTX1BFUl9TRUMgPDwgJ1xuJzsKICAgIHJldHVybigwKSA7Cn0=