#include<iostream>
using namespace std;
int expand(int);
int main()
{
int pr[50],l,f,h,z,count=0;
std::fill_n(pr,50,1);
for (int p=2; p*p<=50; p++)
{
if (pr[p] ==1)
{
for (int i=p*2; i<=50; i += p)
pr[i] = 0;
}
}
cin>>l>>h;
while (l<h)
{
f=0;
for(int i = 2; i <= l/2; ++i)
{
if(l% i == 0)
{
f = 1;
break;
}
}
if (f == 0){
if(l!=1){
z=expand(l);
if(pr[z]==1)
count++;
z=0;}
}
++l;
}
cout<<count;
}
int expand(int value)
{
int count=0;
const char * const ones[20] = {"zero", "one", "two", "three","four","five","six","seven",
"eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
"eighteen","nineteen"};
const char * const tens[10] = {"", "ten", "twenty", "thirty","forty","fifty","sixty","seventy",
"eighty","ninety"};
int a[20]={4,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,9,8,8};
int b[10]={0,3,6,6,5,5,5,7,6,6};
if(value>=1000)
{
count+=expand(value/1000);
count+=8;
if(value % 1000)
{
if(value % 1000 < 100)
{
count+=3;
}
count+=expand(value % 1000);
}
}
else if(value >= 100)
{
count+=expand(value / 100);
count+=7;
if(value % 100)
{
count+=3;
count+=expand (value % 100);
}
}
else if(value >= 20)
{
count+=b[value/10];
if(value % 10)
{;
count+=expand(value % 10);
}
}
else
{
count+=a[value];
}
return count;
}
CgojaW5jbHVkZTxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGV4cGFuZChpbnQpOwppbnQgbWFpbigpCnsKICAgIGludCBwcls1MF0sbCxmLGgseixjb3VudD0wOwoJc3RkOjpmaWxsX24ocHIsNTAsMSk7Cglmb3IgKGludCBwPTI7IHAqcDw9NTA7IHArKykKICAgIHsKICAgICAgICBpZiAocHJbcF0gPT0xKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaT1wKjI7IGk8PTUwOyBpICs9IHApCiAgICAgICAgICAgICAgICBwcltpXSA9IDA7CiAgICAgICAgfQogICAgfQoJY2luPj5sPj5oOwoJd2hpbGUgKGw8aCkKICAgIHsKICAgICAgICBmPTA7CiAgICAgICAgZm9yKGludCBpID0gMjsgaSA8PSBsLzI7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGwlIGkgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZiA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGYgPT0gMCl7CiAgICAgICAgCWlmKGwhPTEpewogICAgICAgICAgICB6PWV4cGFuZChsKTsKICAgICAgIAkJaWYocHJbel09PTEpCgkJCQljb3VudCsrOwoJCQl6PTA7fQoJCX0KCiAgICAgICAgKytsOwogICAgfQoKCWNvdXQ8PGNvdW50Owp9CmludCBleHBhbmQoaW50IHZhbHVlKQp7CglpbnQgY291bnQ9MDsKICAgIGNvbnN0IGNoYXIgKiBjb25zdCBvbmVzWzIwXSA9IHsiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsCiAgICAiZWlnaHQiLCJuaW5lIiwidGVuIiwiZWxldmVuIiwidHdlbHZlIiwidGhpcnRlZW4iLCJmb3VydGVlbiIsImZpZnRlZW4iLCJzaXh0ZWVuIiwic2V2ZW50ZWVuIiwKICAgICJlaWdodGVlbiIsIm5pbmV0ZWVuIn07CiAgICBjb25zdCBjaGFyICogY29uc3QgdGVuc1sxMF0gPSB7IiIsICJ0ZW4iLCAidHdlbnR5IiwgInRoaXJ0eSIsImZvcnR5IiwiZmlmdHkiLCJzaXh0eSIsInNldmVudHkiLAogICAgImVpZ2h0eSIsIm5pbmV0eSJ9OwogICAgaW50IGFbMjBdPXs0LDMsMyw1LDQsNCwzLDUsNSw0LDMsNiw2LDgsOCw3LDcsOSw4LDh9OwoJaW50IGJbMTBdPXswLDMsNiw2LDUsNSw1LDcsNiw2fTsKCWlmKHZhbHVlPj0xMDAwKQogICAgewogICAgICAgIGNvdW50Kz1leHBhbmQodmFsdWUvMTAwMCk7CiAgICAgICAgY291bnQrPTg7CiAgICAgICAgaWYodmFsdWUgJSAxMDAwKQogICAgICAgIHsKICAgICAgICAgICAgaWYodmFsdWUgJSAxMDAwIDwgMTAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3VudCs9MzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3VudCs9ZXhwYW5kKHZhbHVlICUgMTAwMCk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSBpZih2YWx1ZSA+PSAxMDApCiAgICB7CiAgICAgICAgY291bnQrPWV4cGFuZCh2YWx1ZSAvIDEwMCk7CiAgICAgICAgY291bnQrPTc7CiAgICAgICAgaWYodmFsdWUgJSAxMDApCiAgICAgICAgewogICAgICAgICAgICBjb3VudCs9MzsKICAgICAgICAgICAgY291bnQrPWV4cGFuZCAodmFsdWUgJSAxMDApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYodmFsdWUgPj0gMjApCiAgICB7CiAgICAgICAgY291bnQrPWJbdmFsdWUvMTBdOwogICAgICAgIGlmKHZhbHVlICUgMTApCiAgICAgICAgezsKICAgICAgICAgICAgY291bnQrPWV4cGFuZCh2YWx1ZSAlIDEwKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgY291bnQrPWFbdmFsdWVdOwogICAgfQogICAgcmV0dXJuIGNvdW50Owp9