description: <image>
  
  William has two numbers a and b initially both equal to zero. William mastered performing three different operations with them quickly. Before performing each operation some positive integer k is picked, which is then used to perform one of the following operations: (note, that for each operation you can choose a new positive integer k)
  
    1. add number k to both a and b, or 
    2. add number k to a and subtract k from b, or 
    3. add number k to b and subtract k from a. 
  
  
  
  Note that after performing operations, numbers a and b may become negative as well.
  
  William wants to find out the minimal number of operations he would have to perform to make a equal to his favorite number c and b equal to his second favorite number d.
  
  Input
  
  Each test contains multiple test cases. The first line contains the number of test cases t (1 ≤ t ≤ 10^4). Description of the test cases follows.
  
  The only line of each test case contains two integers c and d (0 ≤ c, d ≤ 10^9), which are William's favorite numbers and which he wants a and b to be transformed into.
  
  Output
  
  For each test case output a single number, which is the minimal number of operations which William would have to perform to make a equal to c and b equal to d, or -1 if it is impossible to achieve this using the described operations.
  
  Example
  
  Input
  
  
  6
  1 2
  3 5
  5 3
  6 6
  8 0
  0 0
  
  
  Output
  
  
  -1
  2
  2
  1
  2
  0
  
  Note
  
  Let us demonstrate one of the suboptimal ways of getting a pair (3, 5):
  
    * Using an operation of the first type with k=1, the current pair would be equal to (1, 1). 
    * Using an operation of the third type with k=8, the current pair would be equal to (-7, 9). 
    * Using an operation of the second type with k=7, the current pair would be equal to (0, 2). 
    * Using an operation of the first type with k=3, the current pair would be equal to (3, 5). 
solution: # -*- coding: utf-8 -*-
  """
  Created on Wed Sep  1 16:27:26 2021
  
  @author: ASUS
  """
  
  
  '''#just test
  import cv2
  import math
  import numpy as np
  # 这里也可以使用 Get2D/Set2D 来加载图片
  im = cv2.imread("./test_image.jpg") 
  im_res=im
  im = cv2.imread("./test_image.jpg") 
  H=im.shape[0]
  W=im.shape[1]
  print((H,W))
  Pi=3.141592653589793115997963468544185161590576171875
  delta=0.1
  MiddleX=int(H/2)
  MiddleY=int(W/2)
  print(MiddleX,MiddleY)
  while delta<=2:
      delta+=0.1
      for i in range(H):
          for j in range(W):
              im_res[i,j]=(255,255,255)
      for i in range(H):
          for j in range(W):
              mat=np.array([[math.cos(delta*Pi),math.sin(delta*Pi)],
                             [-math.sin(delta*Pi),math.cos(delta*Pi)]])
              pos=np.array([i-MiddleX,j-MiddleY])
              ans=np.matmul(pos,mat)
              x,y=int(round(ans[0]+MiddleX)),int(round(ans[1]+MiddleY))
              if x>=0 and x<H and y>=0 and y<W:
                  im_res[i,j]=im[x,y]
      cv2.imshow("test_image_output", im_res)
      cv2.waitKey(100)
  cv2.waitKey(0)'''
  t=int(input())
  for i in range(t):
      a,b=input().split()
      a=int(a)
      b=int(b)
      if((b-a)%2==1):
          print(-1)
      else:
          if(a==b):
              if(a==0):
                  print(0)
              else:
                  print(1)
          else:
              print(2)