#include <bits/stdc++.h>

using namespace std;

vector < int > nums[100009];
map < int , int > ok;
vector < int > d;
int S , act , x , i , j , a , b , p[109];

bool prime(int x)
{
    for (int i = 2 ; i * i <= x; ++i)
    if (x % i == 0) return false;

    return true;
}

void bkt(int k)
{
    nums[++S] = d;
    if (k > 8) return;

    d.push_back(0);
    if (k == 0)
    {
        d[k] = 2;
        bkt(k + 1);
        d[k] = 3;
        bkt(k + 1);
        d[k] = 5;
        bkt(k + 1);
        d[k] = 7;
        bkt(k + 1);
    }
    else
    {
        d[k] = 3;
        bkt(k + 1);
        d[k] = 7;
        bkt(k + 1);
    }
    d.pop_back();
}

bool compare(vector < int > a , vector < int > b)
{
    if (a.size() == b.size()) return a < b;
    return a.size() < b.size();
}

int main()
{

//ifstream fin("input");
//ofstream fout("output");

p[1] = 2;
p[2] = 3;
p[3] = 5;
p[4] = 7;
p[5] = 23;
p[6] = 37;
p[7] = 53;
p[8] = 73;

fin >> a >> b;
for (i = 1 ; i <= 8 ; ++i)
if (p[i] >= a) break;

for (j = 1 ; j <= 8 ; ++j)
if (p[j] > b) break;

fout << j - i << '\n';

/*
bkt(0);

sort(nums + 1 , nums + S + 1 , compare);

for (int p = 1 ; p <= S ; p++)
{
    d = nums[p];
    act = 1;
    for (i = 0 ; i <= d.size() && act ; ++i)
    {
        x = 0;

        for (j = 0 ; j < d.size() ; ++j)
        if (j != i) x = x * 10 + d[j];

        if (i == d.size()) act &= prime(x);
        else act &= ok[x];
    }
    if (act)
    {
        ok[x] = 1;
        fout << x << '\n';
    }
}*/

return 0;
}