/***************************************************
 * Alex Palcuie
 * Romania - 2016
 * alex [dot] palcuie [at] gmail [dot] com
 * http://blog.palcu.ro/
****************************************************/

#include <algorithm>
#include <bitset>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <fstream>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

using namespace std;

const int N = 1<<10;
const int INF = 0x3f3f3f3f;

int gcd(int a, int b) {
    while (b) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int main() {
    int x, y;
    cin >> x >> y;
    int max_dif = y - x;
    for (int dif = max_dif; dif > 0; dif--) {
        int no_pairs = max_dif - dif + 1;
        for (int i = 0; i < no_pairs; i++) {
            int a = x + i;
            int b = x + i + dif;
            if (gcd(a, b) == 1) {
                cout << b-a+1 << "\n";
                exit(0);
            }
        }
    }
    cout << "-1\n";

    
    return 0;
}