Problem:
Score : 200 points

Problem Statement

Given are two strings S and T.

Let us change some of the characters in S so that T will be a substring of S.

At least how many characters do we need to change?

Here, a substring is a consecutive subsequence. For example, xxx is a substring of yxxxy, but not a substring of xxyxx.

Constraints

The lengths of S and T are each at least 1 and at most 1000.

The length of T is at most that of S.

S and T consist of lowercase English letters.

Input

Input is given from Standard Input in the following format:

S
T

Output

Print the minimum number of characters in S that need to be changed.

Sample Input 1

cabacc
abc

Sample Output 1

1

For example, changing the fourth character a in S to c will match the second through fourth characters in S to T.

Since S itself does not have T as its substring, this number of changes - one - is the minimum needed.

Sample Input 2

codeforces
atcoder

Sample Output 2

6

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

/* BABA JAGAAAAAA  */  

#include<bits/stdc++.h>
#define pb push_back
#define un unordered_map
#define us unordered_set
#define ll long long
#define fast ios:: sync_with_stdio(false);cin.tie(NULL)
#define l1 long 
using namespace std;
const int  mod= 1e9+7;
const int inf=1e9+3;
 int check(vector<char>v1, vector<char>v2)
 {
     int count=0;
      for(int i=0; i<min(v1.size(),v2.size()); i++)
      {
           if(v1[i]!=v2[i])
           {
               continue;
           }
           count++;
      }
      return count;
      
 }
 int main()
 {
     fast;  
    // 2nd//
    string s,t;
     cin>>s>>t;
     int l,r;
     l=0;
     r=0;
     vector<char> v;
     vector<char>v1;
      for(char f:t)
      v1.pb(f);
     
      int maxi=0;
     while(r<t.size())
     {
             v.pb(s[r]);
             r++;
     }
     int n= check(v,v1);
    //  cout<<n;
    //   for(int i=0; i<v.size(); i++)
    //   cout<<v[i]<<" ";
     maxi=max(maxi,n);
    //   cout<<maxi;


     while(r<s.size())
     {
         v.pb(s[r]);
         v.erase(v.begin()+l);
         
        //  for(int i=0; i<v.size(); i++)
        //   cout<<v[i];
        //   cout<<endl;
         int n= check(v,v1);
         maxi=max(maxi,n);
        //  l++;
         r++;
         
     }
     
  cout<<t.size()-maxi<<endl;
     
    
       return 0;
     
 }