All the numbers in array are 32-bit integers

We check the number of elements in array having bit at ith position = 1 --> x

We check the number of elements in array having bit at ith position = 0 --> y ( intuitively len(A)-x )

Now , for that ith bit we can say that each of the x numbers can be combined with y numbers ( they will have different bit at same position ) .Similarly ,each of the y numbers can be combined with x numbers ( again , because different bit at same position) --> giving us -->x*y + y*x .

Calculate this for all the 32 bits.

```
def hammingDistance(self, A):
ans=0
for i in range(0,32):
x=0
for j in range(len(A)):
if int(A[j] & 1<<i):
x= x+ 1
y=len(A)-x
ans= ans + x*y*2
return ans%1000000007
```