#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
const ll N=1000005;
const ll inf=4e18;
ll n,m;
string s,str;
vector<ll>now;
vector<ll>Prev;
int main()
{
    //freopen(".inp","r",stdin);
    //freopen(".out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m>>s>>str;
    s=' '+s;
    str=' '+str;
    now.assign(n+5,inf);
    Prev.assign(n+5,inf);
    for(ll i=1; i<=n; i++)
    {
        if(s[i]==str[1])
        {
            Prev[i]=0;
        }
    }
    ll res=inf;
    for(ll id=2; id<=m; id++)
    {
        now.assign(n+5,inf);
        for(ll i=1; i<=n; i++)
        {
            if(s[i]!=str[id]) continue;
            if((i!=1&&s[i-1]==str[id-1]) || (i!=n&&s[i+1]==str[id-1]))
            {
                for(ll j=1; j<=n; j++)
                {
                    if(s[j]!=str[id-1] || i==j) continue;
                    now[i]=min(now[i],Prev[j]+abs(i-j));
                }
                
            }
            if(id==m) res=min(res,now[i]);
        }
        swap(now,Prev);
    }
    cout<<(res==inf?-1:res);
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |