Compare bit by bit
```golang []
func minChanges(n int, k int) int {
    count := 0
	for k > 0 || n > 0 {
		bn := n & 1
		bk := k & 1
        n >>= 1
        k >>= 1
        if bn == bk {
            continue
        }
        if bn == 0 {
            return -1
        }
        count += 1
	}
    return count
}
```
['Bit Manipulation', 'Go']