//Dennis

#include <iostream>

using namespace std;

#define FORN(i,a,b) for (int i=a;i<=b;i++)

const int MAX_PRIME=10000000;       //max prime we'll ever need for this problem

const int SQRT_MAX_PRIME=3163;      //Sqrt(MAX_PRIME) - for Eratosthenes Prime Sieve

bool isprime[MAX_PRIME+1];          //data structure to answer question of "is this a prime?"

 

//Eratosthenes Prime Sieve

void primeSieve(bool isprime[],int max_prime)

{

      for (int i=0;i<=max_prime;i++) isprime[i]=true;       //assume all isprime

      isprime[0]=false;

      isprime[1]=false;

      for (int prime=2;prime<=SQRT_MAX_PRIME;prime++)

            if (isprime[prime])

                  for (int comp=prime*prime;comp<max_prime;comp+=prime)

                        isprime[comp]=false;

}

 

//reverses number

int reversed(int n)

{

      int r=0;

      while(n>0)

      {

            r*=10;     

            r+=n%10;

            n/=10;

      }

      return r;

}

 

int main()

{

      //precompute primes

      primeSieve(isprime,MAX_PRIME);

 

      int a,b;

      while(cin>>a>>b && a>0)

      {

            int count=0;           

            FORN(i,a,b) if (isprime[i] && isprime[reversed(i)]) count++;

            cout<<count<<endl;

      }

 

      return 0;

}