#include<bits/stdc++.h>
using namespace std;
long long n,m;
string a,b;
long long dis[350][350];
long long dp[350][350];
vector<long long> q[300];
int main()
{
cin>>n>>m>>a>>b;
memset(dis,0x3f,sizeof dis);
memset(dp,0x3f,sizeof dp);
for(long long i=0;i<n;i++)
{
q[a[i]].push_back(i+1);
if(a[i]==b[0])
dp[0][i+1]=0;
for(long long j=0;j<n;j++)
{
if(j>=1&&a[j-1]==a[i])
dis[i+1][j+1]=abs(i-(j-1))+1;
if(j<n-1&&a[j+1]==a[i])
dis[i+1][j+1]=min(abs(i-(j+1))+1,dis[i+1][j+1]);
}
}
for(long long i=1;i<m;i++)
{
for(auto&&j:q[b[i]])
{
for(long long k=1;k<n;k++)
{
dp[i][j]=min(dp[i][j],dp[i-1][k]+dis[k][j]);
}
}
}
long long ans=0x3f3f3f3f3f;
for(long long i=1;i<=n;i++)
ans=min(dp[m-1][i],ans);
if(ans==0x3f3f3f3f3f)
printf("-1");
else
printf("%lld",ans);
return 0;
}