Program to make target by removing from first or last and inserting again in Python

Suppose we have two strings S and T and they are permutations of each other. Suppose there is an operation where we remove either the first or the last character in S and insert it anywhere in the string. Then find the minimum number of operations needed to convert S into T.

So, if the input is like s = "zyvxw" t = "vwxyz", then the output will be 3, as these operations are: Remove "w" and insert it after "v" to get "zyvwx" Remove "z" and insert it after "x" to get "yvwxz" Remove "y" and insert it after "x" to get "vwxyz".

To solve this, we will follow these steps −

  • ans := size of s, n := size of s

  • for i in range 0 to n-1, do

    • k := 0

    • for j in range i to n-1, do

      • for k in range k to size of t, do

        • if s[j] is same as t[k], then

          • ans := minimum of ans and n - (j - i + 1)

          • come out from the loop

      • k := k + 1

    • return ans

Let us see the following implementation to get better understanding −


 Live Demo

class Solution:
   def solve(self, s, t):
      ans = n = len(s)

      for i in range(n):
         k = 0
         for j in range(i, n):
            for k in range(k, len(t)):
               if s[j] == t[k]:
                  ans = min(ans, n - (j - i + 1))
            k += 1

      return ans

ob = Solution()
s = "zyvxw"
t = "vwxyz"
print(ob.solve(s, t))


"zyvxw", "vwxyz"