Problem: 2050E - Three Strings
Language: C++17 (GCC 7-32)

Previous submission (verdict: Time limit exceeded on test 5):
// Author : Valan Tamil Dasan
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pii pair<int, int>
#define pll pair<long long, long long>
#define vi vector<int>
#define vll vector<long long>
#define mii map<int, int>
#define mll map<long long, long long>
#define si set<int>
#define sc set<char>
#define sp <<" "<<


#define f(i,s,e) for(long long int i=s;i<e;i++)
#define cf(i,s,e) for(long long int i=s;i<=e;i++)
#define rf(i,e,s) for(long long int i=e-1;i>=s;i--)
#define pb push_back
#define eb emplace_back


template <class T>
void print_v(vector<T> &v) { cout << "{"; for (auto x : v) cout << x << ","; cout << "\b}"; }
template<class T>void ptp(T a){for(auto x:a)cout<<x.first<<" "<<x.second<<"\n";}
template<class T>void print(T a){cout<<a<<"\n";}

#define MOD 1000000007
#define PI 3.1415926535897932384626433832795
#define read(type) readInt<type>()
ll min(ll a,int b) { if (a<b) return a; return b; }
ll min(int a,ll b) { if (a<b) return a; return b; }
ll max(ll a,int b) { if (a>b) return a; return b; }
ll max(int a,ll b) { if (a>b) return a; return b; }
ll gcd(ll a,ll b) { if (b==0) return a; return gcd(b, a%b); }
ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
string to_upper(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='a' && a[i]<='z') a[i]-='a'-'A'; return a; }
string to_lower(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='A' && a[i]<='Z') a[i]+='a'-'A'; return a; }
bool prime(ll a) { if (a==1) return 0; for (int i=2;i<=round(sqrt(a));++i) if (a%i==0) return 0; return 1; }
void yes() { cout<<"YES\n"; }
void no() { cout<<"NO\n"; }
vector<bool> seive(ll num){
    vector<bool> arr(num+1,1);
    for(int i = 2;i<=num;i++){
        if(arr[i] == 1){
            for(int j = i*i;j<=num;j+=i){
                arr[j] = 0;
            }       
        }
    }
    arr[0] = 0;
    arr[1] = 0;  
    return arr;
}

typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int  uint64;



void solve(){
    string a , b , c; cin>>a>>b>>c;
    vector<vector<ll>> dp(1001,vll(1001,INT_MAX));
    for(int i = a.size();i>=0;i--){
        for(int j = b.size();j>=0;j--){
            
            int k = i + j;
            if(k >= c.size()) {dp[i][j] = 0;continue;}
            ll l = dp[i+1][j];
            ll r = dp[i][j+1];
            if(a[i] != c[k]){
                l++;
            }if(b[j] != c[k]){
                r++;
            }

            dp[i][j] = min(l , r);
        }
    }
    // for(int i = 0;i<a.size();i++){
    //     // for(auto j : i){
    //     //     cout<<j<<' ';
    //     // }cout<<'\n';
    //     cout<<dp[i][0]<<' ';
    // }
    cout<<dp[0][0]<<'\n';
}

int main(){

  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  // solve();

  // #ifndef ONLINE_JUDGE
  //   freopen("input.txt", "r", stdin);   // Reading from input.txt
  //   freopen("output.txt", "w", stdout); // Writing to output.txt
  //   freopen("output.txt", "w", stderr); // Writing errors to output.txt
  
  // #endif

    int testCase;
    cin>>testCase;

    // int caseNo = 1;
    while (testCase--) {
      // cout<<"Case #"<<caseNo<<": ";
      solve();
      // caseNo++;
    }

  return 0;

}

Submission (verdict: Accepted):
// Author : Valan Tamil Dasan
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pii pair<int, int>
#define pll pair<long long, long long>
#define vi vector<int>
#define vll vector<long long>
#define mii map<int, int>
#define mll map<long long, long long>
#define si set<int>
#define sc set<char>
#define sp <<" "<<


#define f(i,s,e) for(long long int i=s;i<e;i++)
#define cf(i,s,e) for(long long int i=s;i<=e;i++)
#define rf(i,e,s) for(long long int i=e-1;i>=s;i--)
#define pb push_back
#define eb emplace_back


template <class T>
void print_v(vector<T> &v) { cout << "{"; for (auto x : v) cout << x << ","; cout << "\b}"; }
template<class T>void ptp(T a){for(auto x:a)cout<<x.first<<" "<<x.second<<"\n";}
template<class T>void print(T a){cout<<a<<"\n";}

#define MOD 1000000007
#define PI 3.1415926535897932384626433832795
#define read(type) readInt<type>()
ll min(ll a,int b) { if (a<b) return a; return b; }
ll min(int a,ll b) { if (a<b) return a; return b; }
ll max(ll a,int b) { if (a>b) return a; return b; }
ll max(int a,ll b) { if (a>b) return a; return b; }
ll gcd(ll a,ll b) { if (b==0) return a; return gcd(b, a%b); }
ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
string to_upper(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='a' && a[i]<='z') a[i]-='a'-'A'; return a; }
string to_lower(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='A' && a[i]<='Z') a[i]+='a'-'A'; return a; }
bool prime(ll a) { if (a==1) return 0; for (int i=2;i<=round(sqrt(a));++i) if (a%i==0) return 0; return 1; }
void yes() { cout<<"YES\n"; }
void no() { cout<<"NO\n"; }
vector<bool> seive(ll num){
    vector<bool> arr(num+1,1);
    for(int i = 2;i<=num;i++){
        if(arr[i] == 1){
            for(int j = i*i;j<=num;j+=i){
                arr[j] = 0;
            }       
        }
    }
    arr[0] = 0;
    arr[1] = 0;  
    return arr;
}

typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int  uint64;



void solve(){
    string a , b , c; cin>>a>>b>>c;
    ll n = a.size() , m = b.size();
    ll sz = max(n , m) + 2;
    vector<vector<ll>> dp(sz,vll(sz,INT_MAX));
    for(int i = a.size();i>=0;i--){
        for(int j = b.size();j>=0;j--){
            
            int k = i + j;
            if(k >= c.size()) {dp[i][j] = 0;continue;}
            ll l = dp[i+1][j];
            ll r = dp[i][j+1];
            if(a[i] != c[k]){
                l++;
            }if(b[j] != c[k]){
                r++;
            }

            dp[i][j] = min(l , r);
        }
    }
    // for(int i = 0;i<a.size();i++){
    //     // for(auto j : i){
    //     //     cout<<j<<' ';
    //     // }cout<<'\n';
    //     cout<<dp[i][0]<<' ';
    // }
    cout<<dp[0][0]<<'\n';
}

int main(){

  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  // solve();

  // #ifndef ONLINE_JUDGE
  //   freopen("input.txt", "r", stdin);   // Reading from input.txt
  //   freopen("output.txt", "w", stdout); // Writing to output.txt
  //   freopen("output.txt", "w", stderr); // Writing errors to output.txt
  
  // #endif

    int testCase;
    cin>>testCase;

    // int caseNo = 1;
    while (testCase--) {
      // cout<<"Case #"<<caseNo<<": ";
      solve();
      // caseNo++;
    }

  return 0;

}