#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mod 1000000007 
#define all(x) (x).begin(),(x).end()
#define fri(i,a,b) for(int i=a;i<b;i++)
#define frd(i,a,b) for(int i=a;i>b;i--)
#define vi vector<int>
#define vvi vector<vector<int>>
#define F first
#define S second
using namespace std;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n,m;
    cin>>n>>m;
    string s,t;
    cin>>s>>t;
    vi left(m),right(n);
    int j=0;
    fri(i,0,n){
        if(j==m)
            break;
        if(s[i]==t[j])
            left[j++]=i;
    }
    j=t.size()-1;
    frd(i,n-1,-1){
        if(j<0)
            break;
        if(s[i]==t[j])
            right[j--]=i;
    }
    int w=0;
    fri(i,0,m-1)
        w=max(w,right[i+1]-left[i]);
    cout<<w<<endl;
}