use std::collections::HashSet; use std::cmp::{max, min}; fn gcd(a: usize, b: usize) -> usize { if a % b == 0 { return b; } gcd(b, a % b) } fn main() { let mut ab: String = String::new(); std::io::stdin().read_line(&mut ab).ok(); let ab: Vec = ab.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let a: usize = ab[0]; let b: usize = ab[1]; let gcd_val = gcd(max(a, b), min(a, b)); if gcd_val > 1 { println!("{}", -1); } else { let lcm: usize = a * b / gcd_val; let mut used: HashSet = HashSet::new(); for i in 0..b { for j in 0..a { if i * a + j * b < lcm { used.insert(i * a + j * b); } } } println!("{}", lcm - used.len()); } }