#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,m;
char a[N],b[N];
int cnt1=1,cnt2=0;
int vis1[N],vis2[N];
int maxn=0;
int main()
{
	cin>>n>>m;
	scanf("%s",a+1);
	scanf("%s",b+1);
	for(int i=1;i<=n,cnt1<=m;i++){
		if(a[i]==b[cnt1]){
			vis1[cnt1]=i;
			cnt1++;
		}
	}
	cnt2=m;
	for(int i=n;i>=1,cnt2>=0;i--){
		if(a[i]==b[cnt2]){
			vis2[cnt2]=i;
			cnt2--;
		}
	}
	for(int i=2;i<=m;i++){
		maxn=max(maxn,vis2[i]-vis1[i-1]);
	}
	cout<<maxn<<endl;
	return 0;
}