11

发布时间 2023-03-22 21:15:50作者: LittleN
#include<bits/stdc++.h>
#define ll long long
#define pc putchar
using namespace std;
template<typename T>
inline void read(T &x)
{
    x=0;
    T f=1;
    char c=getchar();
    while(!isdigit(c)){if(!isspace(c))f=-1; c=getchar();}
    while(isdigit(c)){x=x*10+(c^48); c=getchar();}
    x*=f;
    return;
}
template<typename T,typename... Args> inline void read(T &x, Args&... args){read(x); read(args...);}
template<typename Z>
inline void write(Z x)
{
    if(x<0)putchar('-'),x=-x;
    if(x>9)write(x/10);
    putchar((x%10)^48);
}
template<typename Z,typename... Args> inline void write(Z x, Args... args){write(x); putchar(' '); write(args...);}
int main()
{
    read(lt, ls);
    cin>>(t+1)>>(s+1);
    for(int i=2, j=0; i<=n; i++)
    {
        while(j && t[i] != t[j+1]) j = nxt[j];
        if(t[i] == t[j+1]) j++;
        nxt[i] = j;
    }
    t[n+1] = '@';
    nxt[n+1] = 1;
    memset(dp,0x3f,sizeof dp);
    dp[0] = 0;
    for(int i=1, j=0; i<=m; i++)
    {
        while(j && s[i] != t[j+1]) j = nxt[j];
        if(s[i] == t[j+1]) j++;
        dp[i] = min(dp[i], dp[i-j] + 1);
    }
    if(dp[m] < INF) write(dp[m]);
    else puts("Fake");
    return 0;
}