#include <stdio.h>
#include <string.h>
#define MAX(a,b) ((a)>(b)?(a):(b))
int main(void) {
int k, dp[1005][1005], i, j, xlen, ylen, c;
char x[1005], y[1005];
while(1){
if(k==0)
break;
for(i=0; i<=xlen; i++){
for(j=0; j<=ylen; j++){
dp[i][j] = 0;
if(i==0 || j==0)
continue;
c = 1;
while(i-c>=0 && j-c>=0 && x[i-c]==y[j-c]){
if(c>=k)
dp[i][j] = MAX(dp[i][j], c+dp[i-c][j-c]);
c++;
}
dp[i][j] = MAX(dp[i][j], dp[i-1][j]);
dp[i][j] = MAX(dp[i][j], dp[i][j-1]);
}
}
printf("%d\n", dp
[xlen
][ylen
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2RlZmluZSBNQVgoYSxiKSAoKGEpPihiKT8oYSk6KGIpKQoKaW50IG1haW4odm9pZCkgewoJaW50IGssIGRwWzEwMDVdWzEwMDVdLCBpLCBqLCB4bGVuLCB5bGVuLCBjOwoJY2hhciB4WzEwMDVdLCB5WzEwMDVdOwoJCgl3aGlsZSgxKXsKCQlzY2FuZigiJWQiLCAmayk7CgkJaWYoaz09MCkKCQkJYnJlYWs7CgkJc2NhbmYoIiVzJXMiLCB4LCB5KTsKCQkKCQl4bGVuID0gc3RybGVuKHgpOwoJCXlsZW4gPSBzdHJsZW4oeSk7CgkJCgkJZm9yKGk9MDsgaTw9eGxlbjsgaSsrKXsKCQkJZm9yKGo9MDsgajw9eWxlbjsgaisrKXsKCQkJCWRwW2ldW2pdID0gMDsKCQkJCWlmKGk9PTAgfHwgaj09MCkKCQkJCQljb250aW51ZTsKCQkJCQoJCQkJYyA9IDE7CgkJCQl3aGlsZShpLWM+PTAgJiYgai1jPj0wICYmIHhbaS1jXT09eVtqLWNdKXsKCQkJCQlpZihjPj1rKQoJCQkJCQlkcFtpXVtqXSA9IE1BWChkcFtpXVtqXSwgYytkcFtpLWNdW2otY10pOwoJCQkJCWMrKzsKCQkJCX0KCQkJCWRwW2ldW2pdID0gTUFYKGRwW2ldW2pdLCBkcFtpLTFdW2pdKTsKCQkJCWRwW2ldW2pdID0gTUFYKGRwW2ldW2pdLCBkcFtpXVtqLTFdKTsKCQkJfQoJCX0KCQkKCQlwcmludGYoIiVkXG4iLCBkcFt4bGVuXVt5bGVuXSk7Cgl9CgkKCXJldHVybiAwOwp9Cg==
Mwpsb3Z4eGVseXh4eHh4Cnh4eHh4eHhsb3ZlbHkKMQpsb3Z4eGVseXh4eHh4Cnh4eHh4eHhsb3ZlbHkKMwpsb3Z4eHhlbHh5eHh4eAp4eHhsb3ZlbHl4eHh4eHh4CjQKbG92eHh4ZWx5eHh4Cnh4eHh4eGxvdmVseQow
3
lovxxelyxxxxx
xxxxxxxlovely
1
lovxxelyxxxxx
xxxxxxxlovely
3
lovxxxelxyxxxx
xxxlovelyxxxxxxx
4
lovxxxelyxxx
xxxxxxlovely
0