/*
PROB: balanced
LANG: C++
COMMENT: Nerealniqt TL
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <numeric>
#include <set>
#include <queue>
#include <map>
#include <stack>
#include <ctime>
#include <cmath>
#include <cstdlib>
#define foreach(a,b) for( typeof((b).begin()) a = (b).begin() ; a != (b).end() ; a++ )
#define eprintf( msg , ... ) 0///fprintf( stderr , "Line %d in %s :: " msg "\n" , __LINE__ , __FUNCTION__ , ##__VA_ARGS__ )

using namespace std;

typedef long long ll;

const int MAXL = 21;
const int DIGITS = 10;
const int MAXDIGIT = 9;
const int EMPTY = 59048;
const int ALL = EMPTY + 2;

ll pow3[200];
int maxdig[MAXL];
ll dp[MAXL][ALL][2][2];
char dpcalc[MAXL][ALL][2][2];
int allok[] = {7381,7382,7387,7388,7390,7391,7396,7397,7435,7436,7441,7442,7444,
7445,7450,7451,7462,7463,7468,7469,7471,7472,7477,7478,7516,7517,7522,7523,7525,7526,7531,
7532,7867,7868,7873,7874,7876,7877,7882,7883,7921,7922,7927,7928,7930,7931,7936,7937,7948,7949,7954,
7955,7957,7958,7963,7964,8002,8003,8008,8009,8011,8012,8017,8018,8110,8111,8116,8117,8119,8120,8125,
8126,8164,8165,8170,8171,8173,8174,8179,8180,8191,8192,8197,8198,8200,8201,8206,8207,8245,8246,8251,8252,8254,
8255,8260,8261,8596,8597,8602,8603,8605,8606,8611,8612,8650,8651,8656,8657,8659,8660,8665,8666,8677,8678,8683,8684,8686,8687,8692,8693,
8731,8732,8737,8738,8740,8741,8746,8747,11755,11756,11761,11762,11764,11765,11770,11771,11809,11810,11815,11816,11818,11819,11824,11825,11836,11837,11842,11843,11845,11846,11851,11852,11890,11891,11896,11897,11899,11900,11905,11906,12241,12242,12247,12248,12250,12251,12256,12257,12295,12296,12301,12302,12304,12305,12310,12311,12322,12323,12328,12329,12331,12332,12337,12338,12376,12377,12382,12383,12385,12386,12391,12392,12484,12485,12490,12491,12493,12494,12499,12500,12538,12539,12544,12545,12547,12548,12553,12554,12565,12566,12571,12572,12574,12575,12580,12581,12619,12620,12625,12626,12628,12629,12634,12635,12970,12971,12976,12977,12979,12980,12985,12986,13024,13025,13030,13031,13033,13034,13039,13040,13051,13052,13057,13058,13060,13061,13066,13067,13105,13106,13111,13112,13114,13115,13120,13121,13942,13943,13948,13949,13951,13952,13957,13958,13996,13997,14002,14003,14005,14006,14011,14012,14023,14024,14029,14030,14032,14033,14038,14039,14077,14078,14083,14084,14086,14087,14092,14093,14428,14429,14434,14435,14437,14438,14443,14444,14482,14483,14488,14489,14491,14492,14497,14498,14509,14510,14515,14516,14518,14519,14524,14525,14563,14564,14569,14570,14572,14573,14578,14579,14671,14672,14677,14678,14680,14681,14686,14687,14725,14726,14731,14732,14734,14735,14740,14741,14752,14753,14758,14759,14761,14762,14767,14768,14806,14807,14812,14813,14815,14816,14821,14822,15157,15158,15163,15164,15166,15167,15172,15173,15211,15212,15217,15218,15220,15221,15226,15227,15238,15239,15244,15245,15247,15248,15253,15254,15292,15293,15298,15299,15301,15302,15307,15308,18316,18317,18322,18323,18325,18326,18331,18332,18370,18371,18376,18377,18379,18380,18385,18386,18397,18398,18403,18404,18406,18407,18412,18413,18451,18452,18457,18458,18460,18461,18466,18467,18802,18803,18808,18809,18811,18812,18817,18818,18856,18857,18862,18863,18865,18866,18871,18872,18883,18884,18889,18890,18892,18893,18898,18899,18937,18938,18943,18944,18946,18947,18952,18953,19045,19046,19051,19052,19054,19055,19060,19061,19099,19100,19105,19106,19108,19109,19114,19115,19126,19127,19132,19133,19135,19136,19141,19142,19180,19181,19186,19187,19189,19190,19195,19196,19531,19532,19537,19538,19540,19541,19546,19547,19585,19586,19591,19592,19594,19595,19600,19601,19612,19613,19618,19619,19621,19622,19627,19628,19666,19667,19672,19673,19675,19676,19681,19682,46747,46748,46753,46754,46756,46757,46762,46763,46801,46802,46807,46808,46810,46811,46816,46817,46828,46829,46834,46835,46837,46838,46843,46844,46882,46883,46888,46889,46891,46892,46897,46898,47233,47234,47239,47240,47242,47243,47248,47249,47287,47288,47293,47294,47296,47297,47302,47303,47314,47315,47320,47321,47323,47324,47329,47330,47368,47369,47374,47375,47377,47378,47383,47384,47476,47477,47482,47483,47485,47486,47491,47492,47530,47531,47536,47537,47539,47540,47545,47546,47557,47558,47563,47564,47566,47567,47572,47573,47611,47612,47617,47618,47620,47621,47626,47627,47962,47963,47968,47969,47971,47972,47977,47978,48016,48017,48022,48023,48025,48026,48031,48032,48043,48044,48049,48050,48052,48053,48058,48059,48097,48098,48103,48104,48106,48107,48112,48113,51121,51122,51127,51128,51130,51131,51136,51137,51175,51176,51181,51182,51184,51185,51190,51191,51202,51203,51208,51209,51211,51212,51217,51218,51256,51257,51262,51263,51265,51266,51271,51272,51607,51608,51613,51614,51616,51617,51622,51623,51661,51662,51667,51668,51670,51671,51676,51677,51688,51689,51694,51695,51697,51698,51703,51704,51742,51743,51748,51749,51751,51752,51757,51758,51850,51851,51856,51857,51859,51860,51865,51866,51904,51905,51910,51911,51913,51914,51919,51920,51931,51932,51937,51938,51940,51941,51946,51947,51985,51986,51991,51992,51994,51995,52000,52001,52336,52337,52342,52343,52345,52346,52351,52352,52390,52391,52396,52397,52399,52400,52405,52406,52417,52418,52423,52424,52426,52427,52432,52433,52471,52472,52477,52478,52480,52481,52486,52487,53308,53309,53314,53315,53317,53318,53323,53324,53362,53363,53368,53369,53371,53372,53377,53378,53389,53390,53395,53396,53398,53399,53404,53405,53443,53444,53449,53450,53452,53453,53458,53459,53794,53795,53800,53801,53803,53804,53809,53810,53848,53849,53854,53855,53857,53858,53863,53864,53875,53876,53881,53882,53884,53885,53890,53891,53929,53930,53935,53936,53938,53939,53944,53945,54037,54038,54043,54044,54046,54047,54052,54053,54091,54092,54097,54098,54100,54101,54106,54107,54118,54119,54124,54125,54127,54128,54133,54134,54172,54173,54178,54179,54181,54182,54187,54188,54523,54524,54529,54530,54532,54533,54538,54539,54577,54578,54583,54584,54586,54587,54592,54593,54604,54605,54610,54611,54613,54614,54619,54620,54658,54659,54664,54665,54667,54668,54673,54674,57682,57683,57688,57689,57691,57692,57697,57698,57736,57737,57742,57743,57745,57746,57751,57752,57763,57764,57769,57770,57772,57773,57778,57779,57817,57818,57823,57824,57826,57827,57832,
57833,58168,58169,58174,58175,58177,58178,58183,58184,58222,58223,58228,58229,58231,
58232,58237,58238,58249,58250,58255,58256,58258,58259,58264,58265,58303,58304,58309,58310,
58312,58313,58318,58319,58411,58412,58417,58418,58420,58421,58426,58427,58465,58466,58471,58472,58474,58475,58480,58481,58492,58493,58498,58499,58501,58502,58507,58508,58546,58547,58552,58553,58555,58556,58561,58562,58897,58898,58903,58904,58906,58907,58912,58913,58951,58952,58957,58958,58960,58961,58966,58967,58978,58979,58984,58985,58987,58988,58993,58994,59032,59033,59038,59039,59041,59042,59047,59048}
;
char allokfast[ALL];

int prepare( ll n ){
    memset( maxdig , 0 , sizeof(maxdig) );
    
    int at = 0;
    
    while( n ){
        maxdig[at++] = n % 10;
        n/=10;
    }
    
    return at;
}

/*
inline void decode( int mask , int arr[] ){
    int at = 0;
    while( mask ){
        arr[at++] = mask % 3;
        mask /= 3;
    }
}

inline int encode( int arr[] ){
    int mask = 0;
    for( int i = 0 ; i <= MAXDIGIT ; i++ ){
        mask += pow3[i] * arr[i];
    }
    return mask;
}
*/

inline int getdig( int mask , int dig ){
    /// 1143 -> get 4
    /// 1143 -> 114 % 10 -> 4
    return (mask / pow3[dig]) % 3;
}

inline int setdig( int mask , int dig , int val ){
    /// 1143 -> set 4 to 5
    /// 114 -> 110 -> 115*pow10[1] + (1143%10) = 
    int newmask = mask / pow3[dig];
    newmask -= newmask % 3;
    newmask += val;
    return ( newmask * pow3[dig] ) + ( mask % pow3[dig] );
}

ll get( int pos , int mask , int zero , int edge){
    if( pos == 0 ){
        return allokfast[mask];
    }
    
    ll &self = dp[pos][mask][zero][edge];
    
    if( dpcalc[pos][mask][zero][edge] )
        return self;
    
    dpcalc[pos][mask][zero][edge] = 1;
    
    int from = (zero^1);
    int to = ( edge ? maxdig[pos-1] : 9 );
    
    self = 0;
    
    for( int i = from ; i <= to ; i++ ){
        /*
        int newmask = 0;
        if( arr[i] == 2 ) arr[i] = 1;
        else if( arr[i] == 1 ) arr[i] = 0;
        else if( arr[i] == 0 ) arr[i] = 1;
        */
        int old = getdig(mask,i);
        int newmask = 0;
        if( old == 2 or old == 0 )
            newmask = setdig(mask,i,1);
        else
            newmask = setdig(mask,i,0);
        self += get( pos - 1 , newmask , 1 , ( edge and to == i ) );
    }
    
    return self;
}


int check(int n){
    int cnt = 0;
    for( int i = 1 ; i <= n ; i++ ){
        int k = i;
        int cnts[10];
        memset( cnts , -1 , sizeof( cnts ) );
        while( k ){
            if( cnts[k%10] == -1 ) cnts[k%10] = 0;
            cnts[k%10]++;
            k /= 10;
        }
        int flag = 1;
        for( int i = 0 ; i < 10 ; i++ ){
            if( (cnts[i] != -1) and (cnts[i]%2) == i % 2 ) flag = 0;
        }
        if( flag )
            cnt++;
    }
    return cnt;
}


ll solve( ll n ){
    int dig = prepare( n );
    
    ll res = 0;
    
    for( int i = 1 ; i <= dig ; i++ ){
        ///eprintf("%d digit numbers -> %d", get( i , EMPTY , 0 , 1 ) );
        res += get( i , EMPTY , 0 , ( i >= dig )  );
    }
    
    return res;
}

int test(){
    int a = 1000;
    int b = rand() % 10000 + a;
    int slow = check(b) - check(a-1);
    int fast = solve( b ) - solve( a-1 );
    if( slow == fast )
        printf("OK %d %d\n", a,b);
    else{
        printf("WA %d %d GOT %d EXPECTED %d\n", a,b, fast,slow);
        exit(1);
    }
    return 1;
}

void precalc(){
    FILE *prec = fopen( "balancedpc.txt" , "w" );
    
    for( int i = 0 ; i <= EMPTY + 1 ; i++ ){
        int flag = 1;
        for( int j = 0 ; j <= 9 ; j++ ){
            if( getdig(i,j) == 2 ) continue;
            if( j % 2 == getdig(i,j) % 2 ){
                flag = 0;
                break;
            }
        }
        if( flag )
            fprintf( prec , ",%d", i);
    }
    
    fclose( prec );
}

int main(){
	//freopen( "balanced.in" , "r" , stdin );
	//freopen( "balanced.out" , "w" , stdout );
	
	pow3[0] = 1;
	for( int i = 1 ; i <= 20 ; i++ ) pow3[i] = pow3[i-1] * 3LL;
	
	///precalc();
	
	///printf("OK done");
	
	for( int i = 0 ; i < sizeof(allok) / sizeof(*allok) ; i++ ) allokfast[ allok[i] ] = 1;
	
	///scanf("%d %d", &A, &B);
	
	///cout << test(B) - test(A-1) << endl;
	
	/// the starting mask is 10101010101 blah blah
	
	///cout << solve( 1000 ) << endl;
	
	ll a,b;
	scanf("%lld %lld", &a, &b);
	
	eprintf("got %lld and %lld", solve(b) , solve(a-1));
	//cout << solve( b ) - solve( a - 1 ) << endl;
	
    printf("%lld\n", solve(b) - solve(a-1));
	
	//for( int i = 0 ; i <= 9 ; i++ ) printf("dig #%d -> %d\n", i, getdig(EMPTY,i));
	
	fprintf( stderr , "%.2lf" , (double)clock() / (double) CLOCKS_PER_SEC);
	return 0;
    srand( time(NULL) );
	int at = 0;
	while( at < 1000 )
        test();
	
	//cout << 0 << endl;
	
	fprintf( stderr , "%.2lf" , (double)clock() / (double) CLOCKS_PER_SEC);
	return 0;
}
