#include<bits/stdc++.h>
using namespace std;

#define ran 202202

int n, m;
char s[ran], t[ran];

int lef[ran], rig[ran];

int main() {
	scanf("%d%d", &n, &m);
	scanf("%s%s", s, t);
	
	int it = 0;
	for(int i=0;i<n;i++) {
		if (it<m && s[i]==t[it]) {
			lef[it] = i;
			it++;
		}
	}
	it = m-1;
	for(int i=n-1;i>=0;i--) {
		if (it>=0 && s[i]==t[it]) {
			rig[it] = i;
			it--;
		}
	}
	
	int ans = 1;
	for(int i=1;i<m;i++)
		ans = max(ans, rig[i]-lef[i-1]);
	printf("%d\n", ans);
	
	return 0;
}