public long GetMinCalculateCount(long sourceX, long sourceY, long targetX, long targetY) {         int count = 0;         while (targetX > 0 && targetY > 0) {             if (targetX == sourceX && targetY == sourceY) {                 return count;             } else if (targetX % 2 == 1 && targetY % 2 == 1) {                 count++;                 targetX--;                 targetY--;             } else if ((targetX % 2 == 0 && targetY % 2 == 0) && ((targetX / 2 > sourceX && targetY / 2 > sourceY) || (targetX / 2 == sourceX && targetY / 2 == sourceY))) {                 count++;                 targetX /= 2;                 targetY /= 2;             } else {                 return (targetX - sourceX == targetY - sourceY) ? count + (targetX - sourceX) : -1;             }         }         return -1;     }