/*
----------------------------
| luogu:roger_yrj |
| Codeforces:yaoruijie |
| AtCoder:r09er_yrj |
----------------------------
*/
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define mp make_pair
#define A first
#define B second
#define pb push_back
#define ls (k<<1)
#define rs (k<<1|1)
#define INF 1061109567
#define Yes printf("Yes\n")
#define No printf("No\n")
#define YES printf("YES\n")
#define NO printf("NO\n")
#define ffl fflush(stdout)
using namespace std;
const int N=3e5+10;
inline ll read(){
ll x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int m,a[N],sum[N][30];
ll n;
string s,t;
bool check(ll k){
if(!k)return 1;
ll j=0;
int L=0;
for(int i=0;i<t.size();i++){
int c=t[i]-'a';ll tmp=k;
if(sum[m][c]==0)return 0;
if(sum[m][c]-sum[L][c]<tmp)tmp-=sum[m][c]-sum[L][c],L=0,j++;
if(!L&&tmp>0){
ll tmpp=(tmp-1)/sum[m][c];
j+=tmpp,tmp-=tmpp*sum[m][c];
}
int l=L,r=m;
while(l<r){
int mid=l+r>>1;
if(sum[mid][c]-sum[L][c]>=tmp)r=mid;
else l=mid+1;
}
L=l;
if(L==m)L=0,j++;
}
if(L)j++;
if(j<=n)return 1;
return 0;
}
void solve(){
cin>>n>>s>>t;
m=s.size();
for(int i=1;i<=m;i++){
for(int j=0;j<26;j++)sum[i][j]=sum[i-1][j];
sum[i][s[i-1]-'a']++;
}
ll l=1,r=1e17+10;
while(l<r){
ll mid=l+r>>1ll;
if(check(mid))l=mid+1;
else r=mid;
}
cout<<r-1;
}
int main(){
solve();
return 0;
}//... ... ... .....