#define ull unsigned long long
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
unsigned long long gcd(unsigned long long a,unsigned long long b)
{
	if (b == 0) return a;
	return gcd(b,a%b);
}
bool isPrime(ull n)
{
	ull sqrtt = sqrt(n);
	for (ull i = 2; i <= sqrtt; ++i)
	{
		if (n%i == 0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	ull a, b, max = 0;
	ull p1=0, p2=0;
	cin >> a >> b;
	for (int i = a; i < b; i++)
	{
		if (isPrime(i))
		{
			p1 = i;
			break;
		}
	}
	for (int i = b; i>a; --i)
	{
		if (isPrime(i))
		{
			p2 = i;
			break;
		}
	}
	if (p1 == p2)
	{
		ull maxim = 0;
		for (ull i = a; i < b; ++i)
		{
			for (ull j = b; j>i; --j)
			{
				if (j - i + 1 > maxim && gcd(i, j) == 1)
				{
					maxim = j - i + 1;
				}
			}
		}
		if (maxim == 0)
		{
			cout << "-1\n";
		}
		else
		{
			cout << maxim << "\n";
		}
	}
	else
	{
		max = p2 - p1 + 1;
		for (ull i = a; i < p1; ++i)
		{
			for (ull j = b; j> p2; --j)
			{
				if (j - i + 1 > max && gcd(i, j) == 1)
				{
					max = j - i + 1;
				}
			}
		}
		cout << max << "\n";
	}
}