#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

bool us[128][128];
unsigned long long comb[128][128];

bool iss[32];
unsigned long long sol[32];
int la, lb;
char a[32], b[32];
char tar[32];

unsigned long long getComb( int n, int k )
{
    if ( ( n == 0 ) && ( k == 0 ) ) return 1;
    if ( n == 0 ) return 0;
    if ( k == 0 ) return 1;
    if ( k > n ) return 0;
    if ( us[n][k] == 1 )
        return comb[n][k];
    comb[n][k] = getComb( n-1, k ) + getComb( n-1, k-1 );
    us[n][k] = 1;
    return comb[n][k];
}

unsigned long long calc( int brc, int ori[10], int put[10], int ld )
{
    int i, j, k;
    int num;
    unsigned long long r = 0;
    num = brc;
    for ( i = 0; i < ld; i++ )
    {
            if ( ( i%2 == 1 ) && ( (ori[i]+put[i])%2 == 1 ) )
            {
                return 0;
            }
            if ( ( i%2 == 0 ) && ( (ori[i]+put[i]) > 0 ) && ( (ori[i]+put[i])%2 == 0 ) )
            {
                return 0;
            }
    }
    if ( ld == 9 )
    {
        put[9] = brc;
        brc = 0;
    }
    if ( brc == 0 )
    {
        r = 1;
        k = 0;
        for ( i = ld; i <= 9; i++ )
        {
            if ( ( i%2 == 1 ) && ( (ori[i]+put[i])%2 == 1 ) )
            {
                put[9] = 0;
                return 0;
            }
            if ( ( i%2 == 0 ) && ( (ori[i]+put[i]) > 0 ) && ( (ori[i]+put[i])%2 == 0 ) )
            {
                put[9] = 0;
                return 0;
            }
        }
        for ( i = 0; i <= 9; i++ )
        {
            k = k + put[i];
        }
        for ( i = 0; i <= 9; i++ )
        {
            r = r * getComb( k, put[i] );
            k = k - put[i];
        }
        put[9] = 0;
        return r;
    }
    j = ori[ld];
    k = ld%2;
    if ( k == 1 )
    {
        for ( i = j%2; i <= brc; i += 2 )
        {
            put[ld] = i;
            r = r + calc( brc-i, ori, put, ld+1 );
            put[ld] = 0;
        }
    }
    else if ( k == 0 )
    {
        for ( i = (j+1)%2; i <= brc; i+=2 )
        {
            put[ld] = i;
            r = r + calc( brc-i, ori, put, ld+1 );
            put[ld] = 0;
        }
        if ( j == 0 )
            r = r + calc( brc, ori, put, ld+1 );
    }
    return r;
}

unsigned long long getSol( int x )
{
    if ( x == 0 ) return 0;
    if ( iss[x] == 1 )
        return sol[x];
    unsigned long long sl = 0;
    int i;
    int br[10], pu[10];
    memset( br, 0, sizeof( br ) );
    for ( i = 1; i <= 9; i++ )
    {
        br[i] = 1;
        memset( pu, 0, sizeof( pu ) );
        sl = sl + calc( x-1, br, pu, 0 );
        br[i] = 0;
    }
    sl = sl + getSol( x-1 );
    sol[x] = sl;
    iss[x] = 1;
    return sol[x];
}

int main()
{
    int i, j, k;
    int br[10], pu[10];
    unsigned long long ans, sa, sb;
    memset( us, 0, sizeof( us ) );
    memset( iss, 0, sizeof( iss ) );

    scanf( "%s", a );
    scanf( "%s", b );
    tar[0] = '1';
    for ( i = 1; i <= 19; i++ )
    {
        tar[i] = '0';
    }
    tar[20] = '\0';
    if ( strcmp( b, tar ) == 0 )
    {
        cout << "31403826054968419\n";
        return 0;
    }
    ans = 0;
    sa = 0; sb = 0;

    memset( br, 0, sizeof( br ) );
    la = strlen( a );
    sa = 0;
    sa = getSol( la-1 );
    for ( i = 0; i < la; i++ )
    {
        for ( j = 0; j + '0' < a[i]; j++ )
        {
            if ( ( j == 0 ) && ( i == 0 ) ) continue;
            br[j]++;
            memset( pu, 0, sizeof( pu ) );
            sa = sa + calc( la-i-1, br, pu, 0 );
            br[j]--;
        }
        br[a[i]-'0']++;
    }

    memset( br, 0, sizeof( br ) );
    lb = strlen( b );
    sb = 0;
    sb = getSol( lb-1 );
    for ( i = 0; i < lb; i++ )
    {
        for ( j = 0; j + '0' < b[i]; j++ )
        {
            if ( ( j == 0 ) && ( i == 0 ) ) continue;
            br[j]++;
            memset( pu, 0, sizeof( pu ) );
            sb = sb + calc( lb-i-1, br, pu, 0 );
            br[j]--;
        }
        br[b[i]-'0']++;
    }
        for ( i = 0; i <= 9; i++ )
        {
            if ( ( i%2 == 1 ) && ( (br[i])%2 == 1 ) )
                break;
            if ( ( i%2 == 0 ) && ( br[i] > 0 ) && ( br[i]%2 == 0 ) )
                break;
        }
        if ( i > 9 ) sb++;
    ans = sb-sa;
    cout << ans << endl;
    return 0;
}
