partial solution. May have timing issues. fixed one typo
```\nclass Solution:\n    def minMoves(self, nums: List[int], limit: int) -> int:\n               len1 = len(nums)//2\n        mymove = 0\n        #movecount = 
```\nclass Solution:\n    def minMoves(self, nums: List[int], limit: int) -> int:\n               len1 = len(nums)//2\n        mymove = 0\n        #movecount = 1\n        diff1 = 0\n        minmove = len1*2*2\n        sums1 = 0\n        sumsmove = 0\n        sumsmin = 0\n        sumsmax = 0\n        for idx in range(len1) :\n          sums1 = nums[idx]+nums[~idx]\n          #For an optimized sum, a higher value may not replace movecount\n          if idx > 1000  :\n                if sums1>sumsmax :\n                    break\n                elif sums1<sumsmin :\n                    break\n          mymove = 0\n\n          for id1 in range(len1) :\n\n            if (id1 == idx) and idx :\n                continue\n\n            if sums1 == nums[id1]+nums[~id1] :\n                #sum matches, no moves required\n                continue\n            diff1 = sums1 - nums[id1]-nums[~id1]\n\n            mymove +=1\n\n            if 1<=nums[id1]+diff1<= limit :\n                continue\n            elif 1<=nums[~id1]+diff1<= limit :\n                continue\n            else :\n                mymove+=1\n            #No point wasting time if lower # exists\n            if mymove > minmove :\n                #at this point, failing value is either higher or lower than optimal\n                #remebr the borderline values for failures\n                if sums1 < sumsmove :\n                    sumsmin = sums1\n                elif sums1 > sumsmove :\n                    sumsmax = sums1\n                break \n          if mymove < minmove :\n              minmove = mymove\n              sumsmove = sums1\n              #movecount = sums1.count(sums1[idx])\n\n        return minmove
[]