#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define nmax 1000007
#define mmax 3007
const long long mod = 1e9 + 7;
long long dp[mmax][mmax];
string conv(const string &e)
{
string r = "";
char c = ' ';
int n = 0;
for (char ch : e)
{
if (isalpha(ch))
{
if (n > 0) r += string(n, c);
c = ch;
n = 0;
}
else if (isdigit(ch)) n = n * 10 + (ch - '0');
}
if (n > 0) r += string(n, c);
return r;
}
long long solve1(const string &a, const string &b)
{
long long m = a.size(), n = b.size();
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
if (a[i - 1] == b[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
return dp[m][n];
}
long long solve2(const string &a, const string &b)
{
int m = a.size(), n = b.size(), res = 0;
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
if (a[i - 1] == b[j - 1])
{
dp[i][j] = dp[i - 1][j - 1] + 1;
res = max((ll) res, dp[i][j]);
}
}
}
return res;
}
signed main()
{
cin.tie(0)->sync_with_stdio(0);
if (fopen("comstr.inp", "r"))
{
freopen("comstr.inp", "r", stdin);
freopen("comstr.out", "w", stdout);
}
string s, l;
cin >> s >> l;
string x = conv(s), y = conv(l);
cout << solve1(x, y) << '\n';
cout << solve2(x, y) << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbm1heCAxMDAwMDA3CiNkZWZpbmUgbW1heCAzMDA3CmNvbnN0IGxvbmcgbG9uZyBtb2QgPSAxZTkgKyA3Owpsb25nIGxvbmcgZHBbbW1heF1bbW1heF07CnN0cmluZyBjb252KGNvbnN0IHN0cmluZyAmZSkKewogICAgc3RyaW5nIHIgPSAiIjsKICAgIGNoYXIgYyA9ICcgJzsKICAgIGludCBuID0gMDsKICAgIGZvciAoY2hhciBjaCA6IGUpCiAgICB7CiAgICAgICAgaWYgKGlzYWxwaGEoY2gpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG4gPiAwKSByICs9IHN0cmluZyhuLCBjKTsKICAgICAgICAgICAgYyA9IGNoOwogICAgICAgICAgICBuID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoaXNkaWdpdChjaCkpIG4gPSBuICogMTAgKyAoY2ggLSAnMCcpOwogICAgfQogICAgaWYgKG4gPiAwKSByICs9IHN0cmluZyhuLCBjKTsKICAgIHJldHVybiByOwp9CmxvbmcgbG9uZyBzb2x2ZTEoY29uc3Qgc3RyaW5nICZhLCBjb25zdCBzdHJpbmcgJmIpCnsKICAgIGxvbmcgbG9uZyBtID0gYS5zaXplKCksIG4gPSBiLnNpemUoKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBuOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoYVtpIC0gMV0gPT0gYltqIC0gMV0pIGRwW2ldW2pdID0gZHBbaSAtIDFdW2ogLSAxXSArIDE7CiAgICAgICAgICAgIGVsc2UgZHBbaV1bal0gPSBtYXgoZHBbaSAtIDFdW2pdLCBkcFtpXVtqIC0gMV0pOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBkcFttXVtuXTsKfQpsb25nIGxvbmcgc29sdmUyKGNvbnN0IHN0cmluZyAmYSwgY29uc3Qgc3RyaW5nICZiKQp7CiAgICBpbnQgbSA9IGEuc2l6ZSgpLCBuID0gYi5zaXplKCksIHJlcyA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGFbaSAtIDFdID09IGJbaiAtIDFdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkcFtpXVtqXSA9IGRwW2kgLSAxXVtqIC0gMV0gKyAxOwogICAgICAgICAgICAgICAgcmVzID0gbWF4KChsbCkgcmVzLCBkcFtpXVtqXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CnNpZ25lZCBtYWluKCkKewogICAgY2luLnRpZSgwKS0+c3luY193aXRoX3N0ZGlvKDApOwogICAgaWYgKGZvcGVuKCJjb21zdHIuaW5wIiwgInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKCJjb21zdHIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiY29tc3RyLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIHN0cmluZyBzLCBsOwogICAgY2luID4+IHMgPj4gbDsKICAgIHN0cmluZyB4ID0gY29udihzKSwgeSA9IGNvbnYobCk7CiAgICBjb3V0IDw8IHNvbHZlMSh4LCB5KSA8PCAnXG4nOwogICAgY291dCA8PCBzb2x2ZTIoeCwgeSkgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9