//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;
}