/*
written by- Piyush Golani
language- c++
country- India
College- N.I.T Jamshedpur
*/
#include <cmath>
#include <ctime>
#include <iostream>
#include <string>
#include <vector>
#include<cstdio>
#include<sstream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<map>
#include<cctype>
using namespace std;
#define pb push_back
#define all(s) s.begin(),s.end()
#define f(i,a,b) for(int i=a;i<b;i++)
#define F(i,a,b) for(int i=a;i>=b;i--)
#define PI 3.1415926535897932384626433832795
#define INF 1000000005
#define BIG_INF 7000000000000000000LL
#define mp make_pair
#define eps 1e-9
#define LL long long
#define si(n) scanf("%d",&n)
#define sll(n) scanf("%lld",&n)
#define mod 1000000007
#define MAX 1005
int k,a,b;
int len[MAX][MAX],seg[MAX][MAX];
int solve(char A[],char B[])
{
f(i,1,a+1)
{
f(j,1,b+1)
{
seg[i][j]=0;
len[i][j]=max(len[i][j-1],len[i-1][j]);
if(A[i-1]==B[j-1])
{
seg[i][j]=seg[i-1][j-1]+1;
if(seg[i][j]>=k)
{
f(p,k,seg[i][j]+1)
{
len[i][j]=max(len[i][j],len[i-p][j-p]+p);
}
}
}
}
}
return len[a][b];
}
int main()
{
while(1){
si(k);
if(k==0) break;
char A[MAX],B[MAX];
scanf("%s",A);
scanf("%s",B);
a=strlen(A);
b=strlen(B);
printf("%d\n",solve(A,B));
}
return 0;
}
LyoKd3JpdHRlbiBieS0gUGl5dXNoIEdvbGFuaQpsYW5ndWFnZS0gYysrCmNvdW50cnktIEluZGlhCkNvbGxlZ2UtIE4uSS5UIEphbXNoZWRwdXIKKi8KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxzc3RyZWFtPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGNzdGRsaWI+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8Y2N0eXBlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGFsbChzKSBzLmJlZ2luKCkscy5lbmQoKQojZGVmaW5lIGYoaSxhLGIpIGZvcihpbnQgaT1hO2k8YjtpKyspCiNkZWZpbmUgRihpLGEsYikgZm9yKGludCBpPWE7aT49YjtpLS0pCiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1CiNkZWZpbmUgSU5GIDEwMDAwMDAwMDUKI2RlZmluZSBCSUdfSU5GIDcwMDAwMDAwMDAwMDAwMDAwMDBMTAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGVwcyAxZS05CiNkZWZpbmUgTEwgbG9uZyBsb25nCiNkZWZpbmUgc2kobikgc2NhbmYoIiVkIiwmbikKI2RlZmluZSBzbGwobikgc2NhbmYoIiVsbGQiLCZuKQojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgTUFYIDEwMDUKCmludCBrLGEsYjsKaW50IGxlbltNQVhdW01BWF0sc2VnW01BWF1bTUFYXTsKaW50IHNvbHZlKGNoYXIgQVtdLGNoYXIgQltdKQp7CiAgICBmKGksMSxhKzEpCiAgICB7CiAgICAgICAgZihqLDEsYisxKQogICAgICAgIHsKICAgICAgICAgICAgc2VnW2ldW2pdPTA7CiAgICAgICAgICAgIGxlbltpXVtqXT1tYXgobGVuW2ldW2otMV0sbGVuW2ktMV1bal0pOwogICAgICAgICAgICBpZihBW2ktMV09PUJbai0xXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2VnW2ldW2pdPXNlZ1tpLTFdW2otMV0rMTsKICAgICAgICAgICAgICAgIGlmKHNlZ1tpXVtqXT49aykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBmKHAsayxzZWdbaV1bal0rMSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbltpXVtqXT1tYXgobGVuW2ldW2pdLGxlbltpLXBdW2otcF0rcCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGxlblthXVtiXTsKfQoKCgppbnQgbWFpbigpCnsKICAgIHdoaWxlKDEpewogICAgc2koayk7CiAgICBpZihrPT0wKSBicmVhazsKICAgIGNoYXIgQVtNQVhdLEJbTUFYXTsKICAgIHNjYW5mKCIlcyIsQSk7CiAgICBzY2FuZigiJXMiLEIpOwogICAgYT1zdHJsZW4oQSk7CiAgICBiPXN0cmxlbihCKTsKICAgIHByaW50ZigiJWRcbiIsc29sdmUoQSxCKSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQoK