K-Similar Strings LeetCode solution in Python
1class Solution:2def kSimilarity(self, s1: str, s2: str) -> int:3n = len(s1)45def helper(i, curr, dp):6if curr == s2:7return 089if curr not in dp[i]:10if curr[i] == s2[i]:11dp[i][curr] = helper(i + 1, curr, dp)12else:13temp = sys.maxsize14for j in range(i + 1, n):15if curr[j] == s2[i]:16temp = min(17temp,18119+ helper(20i + 1,21curr[:i]22+ curr[j]23+ curr[i + 1 : j]24+ curr[i]25+ curr[j + 1 :],26dp,27),28)2930dp[i][curr] = temp31return dp[i][curr]3233dp = [{} for _ in range(n)]34return helper(0, s1, dp)