CF1874B Jellyfish and Math
Description
Jellyfish is given the non-negative integers $ a $ , $ b $ , $ c $ , $ d $ and $ m $ . Initially $ (x,y)=(a,b) $ . Jellyfish wants to do several operations so that $ (x,y)=(c,d) $ .
For each operation, she can do one of the following:
- $ x := x\,\&\,y $ ,
- $ x := x\,|\,y $ ,
- $ y := x \oplus y $ ,
- $ y := y \oplus m $ .
Here $ \& $ denotes the [bitwise AND operation](https://en.wikipedia.org/wiki/Bitwise_operation#AND), $ | $ denotes the [bitwise OR operation](https://en.wikipedia.org/wiki/Bitwise_operation#OR) and $ \oplus $ denotes the [bitwise XOR operation](https://en.wikipedia.org/wiki/Bitwise_operation#XOR).
Now Jellyfish asks you for the minimum number of operations such that $ (x,y)=(c,d) $ .
Input Format
Each test contains multiple test cases. The first line contains the number of test cases $ t $ ( $ 1 \leq t \leq 10^5 $ ). The description of the test cases follows.
The only line of each test case contains five integers, $ a $ , $ b $ , $ c $ , $ d $ and $ m $ ( $ 0 \leq a, b, c, d, m < 2^{30} $ ).
Output Format
For each test case, output a single integer — the minimum number of operations. If this cannot be achieved, output $ -1 $ instead.
Explanation/Hint
In the first test case, we can do the operation $ y = x \oplus y $ .
In the second test case, it is not possible to change $ (x,y)=(1,2) $ using any sequence of operations.
In the third test case, we can do the operation $ x = x\,\&\,y $ followed by the operation $ y = y \oplus m $ .