#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define MASK(i) (1LL << (i))
#define BIT(i,n) (((n) >> (i)) & 1LL)
typedef long long ll;
typedef pair<int, int> pii;
template <class X, class Y> bool mini(X& x, const Y& y) {
if(x > y){ x = y; return 1; }
return 0;
}
template <class X, class Y> bool maxi(X& x, const Y& y) {
if(x < y){ x = y; return 1; }
return 0;
}
const int N = 1e6 + 5;
const int S = 200;
const int LOG10 = 15;
bitset<S> prime;
ll pow10[LOG10], sum[N], lg10[N], num, l, r, ans = 0;
void prepare()
{
prime.set();
for(int i = 2; i * i < S; ++i){
if(!prime[i]) continue;
for(int j = i * i; j < S; j += i)
prime[j] = 0;
}
pow10[0] = 1;
for(int i = 1; i < LOG10; ++i)
pow10[i] = pow10[i - 1] * 10;
lg10[0] = sum[0] = 0;
for(int i = 1; i < N; ++i)
sum[i] = sum[i / 10] + i % 10, lg10[i] = lg10[i / 10] + 1;
}
int rev(int x)
{
int res = 0;
while(x) res = res * 10 + x % 10, x /= 10;
return res;
}
int main()
{
ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define file "PALINPRIME"
if(fopen(file".inp", "r")){
freopen(file".inp", "r", stdin);
freopen(file".out", "w", stdout);
}
prepare();
cin >> l >> r;
for(int i = 1; i < N; ++i){
int revi = rev(i);
num = 1LL * i * pow10[lg10[i]] + revi;
if(l <= num && num <= r){
ans += prime[sum[i] << 1];
// if(prime[sum[i] << 1]) cerr << num << "\n";
}
if(num > r) break;
for(int j = 0; j <= 9; ++j){
num = 1LL * i * pow10[lg10[i] + 1] + 1LL * j * pow10[lg10[i]] + revi;
if(l <= num && num <= r){
ans += prime[(sum[i] << 1) + j];
// if(prime[(sum[i] << 1) + j]) cerr << num << "\n";
}
}
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKGksbikgKCgobikgPj4gKGkpKSAmIDFMTCkKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKCnRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPiBib29sIG1pbmkoWCYgeCwgY29uc3QgWSYgeSkgewogICAgaWYoeCA+IHkpeyB4ID0geTsgcmV0dXJuIDE7IH0KICAgIHJldHVybiAwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4gYm9vbCBtYXhpKFgmIHgsIGNvbnN0IFkmIHkpIHsKICAgIGlmKHggPCB5KXsgeCA9IHk7IHJldHVybiAxOyB9CiAgICByZXR1cm4gMDsKfQoKY29uc3QgaW50IE4gPSAxZTYgKyA1Owpjb25zdCBpbnQgUyA9IDIwMDsKY29uc3QgaW50IExPRzEwID0gMTU7CgpiaXRzZXQ8Uz4gcHJpbWU7CmxsIHBvdzEwW0xPRzEwXSwgc3VtW05dLCBsZzEwW05dLCBudW0sIGwsIHIsIGFucyA9IDA7Cgp2b2lkIHByZXBhcmUoKQp7CiAgICBwcmltZS5zZXQoKTsKICAgIGZvcihpbnQgaSA9IDI7IGkgKiBpIDwgUzsgKytpKXsKICAgICAgICBpZighcHJpbWVbaV0pIGNvbnRpbnVlOwogICAgICAgIGZvcihpbnQgaiA9IGkgKiBpOyBqIDwgUzsgaiArPSBpKQogICAgICAgICAgICBwcmltZVtqXSA9IDA7CiAgICB9CgogICAgcG93MTBbMF0gPSAxOwogICAgZm9yKGludCBpID0gMTsgaSA8IExPRzEwOyArK2kpCiAgICAgICAgcG93MTBbaV0gPSBwb3cxMFtpIC0gMV0gKiAxMDsKCiAgICBsZzEwWzBdID0gc3VtWzBdID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBOOyArK2kpCiAgICAgICAgc3VtW2ldID0gc3VtW2kgLyAxMF0gKyBpICUgMTAsIGxnMTBbaV0gPSBsZzEwW2kgLyAxMF0gKyAxOwp9CgppbnQgcmV2KGludCB4KQp7CiAgICBpbnQgcmVzID0gMDsKICAgIHdoaWxlKHgpIHJlcyA9IHJlcyAqIDEwICsgeCAlIDEwLCB4IC89IDEwOwogICAgcmV0dXJuIHJlczsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApLGNpbi50aWUoMCksY291dC50aWUoMCk7CiAgICAjZGVmaW5lIGZpbGUgIlBBTElOUFJJTUUiCiAgICBpZihmb3BlbihmaWxlIi5pbnAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oZmlsZSIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIHByZXBhcmUoKTsKICAgIGNpbiA+PiBsID4+IHI7CgogICAgZm9yKGludCBpID0gMTsgaSA8IE47ICsraSl7CiAgICAgICAgaW50IHJldmkgPSByZXYoaSk7CiAgICAgICAgbnVtID0gMUxMICogaSAqIHBvdzEwW2xnMTBbaV1dICsgcmV2aTsKICAgICAgICBpZihsIDw9IG51bSAmJiBudW0gPD0gcil7CiAgICAgICAgICAgIGFucyArPSBwcmltZVtzdW1baV0gPDwgMV07Ci8vICAgICAgICAgICAgaWYocHJpbWVbc3VtW2ldIDw8IDFdKSBjZXJyIDw8IG51bSA8PCAiXG4iOwogICAgICAgIH0KICAgICAgICBpZihudW0gPiByKSBicmVhazsKCiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8PSA5OyArK2opewogICAgICAgICAgICBudW0gPSAxTEwgKiBpICogcG93MTBbbGcxMFtpXSArIDFdICsgMUxMICogaiAqIHBvdzEwW2xnMTBbaV1dICsgcmV2aTsKICAgICAgICAgICAgaWYobCA8PSBudW0gJiYgbnVtIDw9IHIpewogICAgICAgICAgICAgICAgYW5zICs9IHByaW1lWyhzdW1baV0gPDwgMSkgKyBqXTsKLy8gICAgICAgICAgICAgICAgaWYocHJpbWVbKHN1bVtpXSA8PCAxKSArIGpdKSBjZXJyIDw8IG51bSA8PCAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgYW5zOwoKICAgIHJldHVybiAwOwp9Cg==