INF = 10**18 from bisect import bisect_left T = int(input()) def num_ijou(li, x): # x 以上の最小値(なければ inf) res = bisect_left(li, x) return INF if res == len(li) else li[res] def make_divisors(n): lower_divisors , upper_divisors = [], [] i = 1 while i*i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n//i) i += 1 return lower_divisors + upper_divisors[::-1] def solve(a, b): if a == b: return 0 # (B - A)/(A + X) が割り切れれば良い divs = make_divisors(b - a) # divs の中から a 以上の最小値を見つける memo = num_ijou(divs, a) if memo == INF: return -1 else: return memo - a ansl = [] for i in range(T): a, b = map(int, input().split()) ansl.append(solve(a, b)) print(*ansl,sep='\n')