#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
string a, b;
cin >> a >> b;
int n = a.length();
int m = b.length();
vector<int> dp(m + 1, 0);
int maxLength = 0;
for (int i = 1; i <= n; ++i) {
vector<int> next_dp(m + 1, 0);
for (int j = 1; j <= m; ++j) {
if (a[i - 1] == b[j - 1]) {
next_dp[j] = dp[j - 1] + 1;
maxLength = max(maxLength, next_dp[j]);
}
}
dp = next_dp;
}
cout << maxLength << endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCiAgICBzdHJpbmcgYSwgYjsKICAgIGNpbiA+PiBhID4+IGI7CgogICAgaW50IG4gPSBhLmxlbmd0aCgpOwogICAgaW50IG0gPSBiLmxlbmd0aCgpOwoKICAgIHZlY3RvcjxpbnQ+IGRwKG0gKyAxLCAwKTsKICAgIGludCBtYXhMZW5ndGggPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIHZlY3RvcjxpbnQ+IG5leHRfZHAobSArIDEsIDApOwogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07ICsraikgewogICAgICAgICAgICBpZiAoYVtpIC0gMV0gPT0gYltqIC0gMV0pIHsKICAgICAgICAgICAgICAgIG5leHRfZHBbal0gPSBkcFtqIC0gMV0gKyAxOwogICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4KG1heExlbmd0aCwgbmV4dF9kcFtqXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZHAgPSBuZXh0X2RwOwogICAgfQoKICAgIGNvdXQgPDwgbWF4TGVuZ3RoIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K