#include <iostream>
#include <fstream>
#include <bitset>
#include <vector>
using namespace std;
#define llu long long int
const int zecela8 = 10000000;
bitset< zecela8+3 > v;
vector< llu > primes;
vector< llu > primesofa;
int main()
{
    for(int i = 3 ; i*i <= zecela8 ; i ++)
        if(v[i] == 0)
            for(int j = i*i ; j <= zecela8 ; j += 2*i )
                v[j] = 1;
    primes.push_back(2);
    for(int i = 3 ; i <= zecela8 ; i+= 2)
        if (v[i] == 0)
            primes.push_back(i);
    /*cout<<"primes until "<< zecela8;
    for(auto p:primes)
        cout<<p<<" ";
    cout<<'\n';
    cout<<"primes of a\n";*/
    llu a,b;
    cin >> a >> b;
    for(auto prime:primes)
        if (a%prime == 0)
            primesofa.push_back(prime);
    //for(auto p:primesofa)
        //cout<<p<<" ";
    bool notfound = true;
    while(b>a && notfound == true)
    {
        notfound = false;
        for(auto prime:primesofa)
            if (b%prime == 0)
                notfound = true;
        if(notfound)
            b--;
    }
    //cout<<"\nb="<<b;
    if(b == a)
        cout<<"-1";
    else
        cout<<b-a;
    return 0;
}