def rotate(x, n, d): if x - d < 1: return x - d + n elif x + d > n: return x + d - n else: return x - d def palindrome_ops(w, n, d): # generate all palindromes mid = (w + 1) // 2 if w % 2 == 0: palindromes = [(i,) * mid for i in range(1, n+1)] else: palindromes = [(i,) * (mid - 1) + (j,) + (i,) * (mid - 1) for i in range(1, n+1) for j in range(1, n+1)] # calculate minimum operations for each palindrome min_ops = float('inf') for p in palindromes: ops = 0 for i in range(mid): if p[i] != p[w-i-1]: diff = abs(p[i] - p[w-i-1]) ops += min(diff, n-diff) // d min_ops = min(min_ops, ops) return min_ops if min_ops != float('inf') else -1