1var palindromePartition = function (s, k) {2const len = s.length;34const cost = (i = 0, j = 0) => {5let c = 0;6while (i <= j) {7if (s[i] != s[j]) c++;8i++, j--;9}10return c;11};1213const dp = Array.from({ length: len }, () => {14return new Array(k + 1).fill(-1);15});1617const splitHelper = (idx = 0, sl = k) => {18if (sl < 0) return Infinity;19if (idx == len) {20if (sl == 0) return 0;21return Infinity;22}2324if (dp[idx][sl] != -1) return dp[idx][sl];2526let ans = Infinity;2728for (let i = idx; i < len; i++) {29ans = Math.min(ans, splitHelper(i + 1, sl - 1) + cost(idx, i));30}31return (dp[idx][sl] = ans);32};3334return splitHelper();35};