#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion var ans = new List(); var t = I(); while (t-- > 0) { var sx = I(); var sy = I(); var tx = I(); var ty = I(); if (Math.Abs(sy - ty) > 60) { ans.Add(Math.Abs(sy - ty)); continue; } if (sy > 60) sx = 0; else for (var i = 0; i < sy; i++) sx >>= 1; if (ty > 60) tx = 0; else for (var i = 0; i < ty; i++) tx >>= 1; if (sy > ty) (sx, sy, tx, ty) = (tx, ty, sx, sy); var u = 0; while (sy < ty) { u++; sx >>= 1; sy++; } var tns = long.MaxValue; while (true) { var dx = Math.Abs(sx - tx); tns = Math.Min(tns, u + dx); if (dx == 0) break; u++; sx >>= 1; tx >>= 1; } ans.Add(tns); } Console.WriteLine(string.Join(Environment.NewLine, ans));