Python solution with explanation (beats 100%)
The maximum number of moves would be the total number of empty spots between the stones.\n\nThe minimum number of moves can be obtained by analyzing the followi
The maximum number of moves would be the total number of empty spots between the stones.\n\nThe minimum number of moves can be obtained by analyzing the following 4 cases:\n1. If the number of empty spots between any one of the pairs of successive stones is 1, e.g. [1, 3, 5], and [3, 5, 10], then only **1 move** is required which fills the empty spot between the pair of stones.\n2. If there are no empty spots between both the successive pair of stones, e.g. [1, 2, 3], then **no move** is required.\n3. If there is no empty spot between any one of the pairs of successive stones, e.g. [2, 10, 11] or [2, 3, 10], then only **1 move** is required.\n4. For all the other possible configurations, at least **2 moves** are required.\n\n```Python\nclass Solution:\n    def numMovesStones(self, a: int, b: int, c: int) -> List[int]:\n        stones = sorted([a, b, c])\n        max_moves = (stones[1] - stones[0] - 1) + (stones[2] - stones[1] - 1) # points between the stones\n        \n        # add cases for min_moves\n        if stones[1] - stones[0] == 2 or stones[2] - stones[1] == 2:\n            # [1, 3, 5]\n            min_moves = 1\n        elif stones[1] - stones[0] == 1 and stones[2] - stones[1] == 1:\n            # [1, 2, 3]\n            min_moves = 0\n        elif stones[1] - stones[0] == 1 or stones[2] - stones[1] == 1:\n            # [2, 10, 11] or [2, 3, 10]\n            min_moves = 1\n        else:\n            # all other cases\n            min_moves = 2\n        \n        return [min_moves, max_moves]\n```
[]