#include <iostream>
#include <fstream>

using namespace std;

long long dif_max;

long long a, b;


int gcd ( int a, int b )
{
  int c;
  while ( a != 0 ) {
     c = a; a = b%a;  b = c;
  }
  return b;
}

void genereaza(long long m, long long n) {
    if (m > b || n > b) return;
    if (m < 1 || n < 1) return;
    if (a <= m && m <= b && a <= n && n <= b) {
        dif_max = max(dif_max, m - n + 1);
    }
    genereaza(2 * m - n, m);
    genereaza(2 * m + n, m);
    genereaza(m + 2 * n, n);
}


void solve_full() {
    long long b2 = b, a2;
    dif_max = -1;
    while (a < b2 && gcd(a, b2) > 1) {
        b2--;
    }

    if (a == b2) {
        genereaza(2, 1);
        genereaza(3, 1);
        cout << dif_max << '\n';
        return;
    }

    dif_max = b2 - a + 1;

    for (int i = 1; i <= dif_max; i++) {
        a2 = a + i;
        b2 = b;
        while (a2 < b2 && gcd(a2, b2) > 1) b2--;
        if (a2 != b2) dif_max = max(dif_max, b2 - a2 + 1);
    }
    cout << dif_max << '\n';
}

int main() {
    cin >> a >> b;
    solve_full();
    return 0;
}