#include <stdio.h>
#include <string.h>
#include <vector>

using namespace std;

#define MAX(a, b)	((a) > (b) ? (a) : (b))
#define MIN(a, b)	((a) < (b) ? (a) : (b))
#define ABS(a)		((a) < (0) ? (-(a)) : (a))

void setIO(const char * in = NULL, const char * out = NULL);

//vector<int> V;

int V[33333], v_s = 0;

bool prim(int a){
	
	for(int i = 2; i * i <= a; ++i){
		if(a % i == 0)
			return false;
	}
	
	return true;
}

int main(){
	
	//setIO("file", "file.out");
	
	
	int A, B;	scanf("%d %d", &A, &B);
	
	
	int masc[10];
	int vals[] = {2, 3, 5 ,7}, t, u, p, v;
	
	int pt = 4;
	for(int i = 1; i <= 9; ++i, pt <<= 2){
	
		for(int j = 0; j < pt; ++j){
			
			memset(masc, 0, sizeof(masc));
			
			t = j;
			u = 0;
			while(t > 0){
				masc[u] = t % 4;
				t >>= 2;
				u++;
			}

			
			p = 1;
			v = 0;
			for(int k = 0; k < i; ++k){
				v = vals[masc[k]] * p + v;
				p *= 10;
			}
			
			if(prim(v) == true){
				V[v_s++] = v;
			}
		}
		
	}
	
	int n = v_s;
	
	int p1 = n - 1;
	for(int i = 0; i < n; ++i){
		if(V[i] >= A){
			p1 = i;
			break;
		}
	}
	
	int p2 = n - 1;
	for(int i = 0; i < n; ++i){
		if(V[i] >= B){
			p2 = i;
			break;
		}
	}
	
	int ans = p2 - p1;
	
	if(B == V[p2]) ans++;
	
	printf("%d", ans);
	
return 0;	
}

void setIO(const char * in, const char * out){
	if(in != NULL)	freopen(in, "r", stdin);
	if(out != NULL)	freopen(out, "w", stdout);
}