#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... |