class Solution:
def minOperations(self, nums: List[int]) -> List[int]:
res = []
for num in nums:
x = bin(num)[2:]
n = len(x)
first = x[:n // 2]
last = x[(n + 1) // 2:]
if n % 2:
center = x[n// 2]
else:
center = ""
if n == 1:
res.append(0)
continue
first2 = bin(int(first, 2) + 1)[2:]
first3 = bin(int(first, 2) - 1)[2:]
target = first + center + first[::-1]
target2 = first2 + center + first2[::-1]
target3 = first3 + center + first3[::-1]
val = abs(int(target, 2) - num)
val2 = abs(int(target2, 2) - num)
val3 = abs(int(target3, 2) - num)
value = min([val, val2, val3])
if center:
center = str(int(center) ^ 1)
target = first + center + first[::-1]
target2 = first2 + center + first2[::-1]
target3 = first3 + center + first3[::-1]
val = abs(int(target, 2) - num)
val2 = abs(int(target2, 2) - num)
val3 = abs(int(target3, 2) - num)
value = min([val, val2, val3, value])
res.append(value)
return res