#include<bits/stdc++.h>
#define MAX 1000005
#define pb push_back
using namespace std;
vector<int>prime;
bool check[MAX];
int ans[MAX];
void sieve()
{
int i,j,k;
k = sqrt(MAX);
for(i=3; i<=k; i+=2)
{
if(check[i]==0)
{
for(j=i*i; j<MAX; j+=i+i)
{
check[j]=1;
}
}
}
for(i=101; i<=999999; i+=2)
{
if(!check[i])
{
prime.pb(i);
}
}
}
void solve()
{
int len = prime.size();
string s;
char ch,str[10];
int i,j,num,lenS,cnt,crclr_prime;
for(i=0; i<len; i++)
{
sprintf(str,"%d",prime[i]);
s = string(str);
lenS = s.length();
bool tag = false;
for(j=0;j<lenS;j++)
{
if(s[j]=='0'||s[j]=='2'||s[j]=='4'||s[j]=='6'||s[j]=='8')
{
tag = true;
break;
}
}
if(tag)
continue;
crclr_prime = cnt = 0;
while(cnt<lenS-1)
{
ch = s[0];
s.erase(s.begin());
s.insert(s.begin()+lenS-1,ch);
cnt++;
num = atoi(s.c_str());
if(!check[num])
{
crclr_prime++;
}
}
if(crclr_prime==lenS-1)
{
ans[prime[i]] = 1;
}
}
for(i=101; i<=MAX-5; i++)
{
ans[i]+=ans[i-1];
}
}
int main()
{
sieve();
solve();
int from,to,res;
while(scanf("%d",&from)==1)
{
if(from==-1)
{
break;
}
scanf("%d",&to);
res = ans[to]-ans[from-1];
if(res==0)
{
puts("No Circular Primes.");
continue;
}
(res==1) ? printf("%d Circular Prime.\n",res) :
printf("%d Circular Primes.\n",res);
}
return 0;
}