Simple approach. Check three conditions.
Intuition\nVery simple, check the comments in the code.\n\n# Approach\nOnly need to check three conditions.\n\n# Complexity\n- Time complexity: O(1)\n\n- Space 
# Intuition\nVery simple, check the comments in the code.\n\n# Approach\nOnly need to check three conditions.\n\n# Complexity\n- Time complexity: O(1)\n\n- Space complexity: O(1)\n\n# Code\n```cpp []\nclass Solution {\npublic:\n    vector<int> numMovesStones(int a, int b, int c) {\n        int mx = max(a, max(b, c)), mn = min(a, min(b, c));\n        // If you move only 1 step, no matter how you move, you\'ll \n        // always need max_moves.\n        int max_moves = mx - mn - 2;\n        // Condition-1: min_moves = 0\n        if (max_moves == 0) {\n            return {0, 0};\n        }\n        int x = a + b + c - (mx + mn);\n        // Condition-2: min_moves = 1.\n        // When 2 of the stones are just apart by <=2, min moves will\n        // always be 1 because they can be made consecutive in 1 step.\n        if (abs(mx - x) <= 2 || abs(mn - x) <= 2) {\n            return {1, max_moves};\n        } else {\n            return {2, max_moves}; // Condition-3: min_moves = 2.\n        }\n    }\n};\n```
['C++']