// Hail god Yato
 
#include <bits/stdc++.h> 
using namespace std;
 
#define hs ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
typedef long long ll;
const ll MOD = 1000000007;
const ll INF = 1e18;
const ll MAX = 100001;
//
//
pair<ll, ll> calc(ll b, ll c){
    if(c&1)
        return {-b-c/2, -b+c/2};
    else{
        if(c == 0)
            return {b, b};
        return {b-c/2, b+c/2-1};
    }
}
void solve(){
    ll b, c;
    cin>>b>>c;
    // b = abs(b);
    pair<ll, ll> fst = calc(b, c);
    pair<ll, ll> snd = calc(b, c-1);
    // cout<<fst.second<<" "<<fst.first;
    // cout<<snd.second<<" "<<snd.first<<" ";
    ll ans = fst.second - fst.first + 1 + snd.second - snd.first + 1;
    // if((fst.first <= snd.first && fst.second >= snd.first) || (fst.first >= snd.first && fst.second <= snd.second))
        ans -= max(0ll, min(snd.second, fst.second) - max(fst.first, snd.first) + 1);
    // else{
    //     swap(fst, snd);
    //     if((fst.first <= snd.first && fst.second >= snd.first) || (fst.first >= snd.first && fst.second <= snd.second))
    //         ans -= min(snd.second, fst.second) - max(fst.first, snd.first) + 1;
    // }

    cout<<ans;
}
signed main(){ 
        hs;
        ll t;
        t=1;
        // cin>>t;
        for (int i=1; i<=t; i++){
                //cout<<"Case #"<<i<<": ";
                solve();
         }
        return 0; 
}
#include <vector>
#include <iostream>

#define int         long long
#define double      long double
#define tezz        ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

using namespace std;

signed main() {
    tezz

    vector<int> primes;
    for (int i = 2; i < 72; i++) {
        bool flag = true;
        for (int j = 2; j < i; j++) {
            if (i % j == 0) flag = false;
        }
        if (flag) primes.emplace_back(i);
    }

    int A, B;
    cin >> A >> B;
    vector<int> v(B - A + 1);
    for (int i = A; i <= B; i++) {
        int mask = 0;
        for (int j = 0; j < primes.size(); j++) {
            if (i % primes[j] == 0) {
                mask |= (1 << j);
            }
        }
        v[i - A] = mask;
    }

    vector<int> dp(1<<primes.size());
    dp[0] = 1;
    for (int x: v) {
        for (int mask = 0; mask < (1 << primes.size()); mask++) {
            if (dp[mask]&&(mask & x)==0) {
                dp[mask ^ x] += dp[mask];
            }
        }
    }

    int ans = 0;
    for (int i = 0; i < (1 << primes.size()); i++) ans += dp[i];
    cout << ans;
}