#include <bits/stdc++.h>
using namespace std::literals::string_literals;
using i64 = std::int_fast64_t;
using std::cout;
using std::cerr;
using std::endl;
using std::cin;

template<typename T>
std::vector<T> make_v(size_t a){return std::vector<T>(a);}

template<typename T,typename... Ts>
auto make_v(size_t a,Ts... ts){
  return std::vector<decltype(make_v<T>(ts...))>(a,make_v<T>(ts...));
}

int main() {
	int a, b; scanf("%d%d", &a, &b);

	if(std::__gcd(a, b) != 1) printf("-1\n");
	else {
		std::vector<bool> cnt(2 * a * b + 1, false);
		for(int x = 0; x <= b; x++) {
			for(int y = 0; y <= a; y++) {
				cnt[a * x + b * y] = true;
			}
		}

		int ans = 0;
		for(auto v: cnt) ans += !v;
		printf("%d\n", ans >> 1);
	}
	return 0;
}