// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<ii, int> iii;
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define rep(i, n) for(int i=0; i<(n); ++i)
#define red(i, n) for(int i=(n)-1; i>=0; --i)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "icebearat"
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const ll LLinf = 1e18 + 27092008;
const int N = 5000 + 5;
int n, m;
string s, t;
int prefA[N][26], prefB[N][26], lastA[N], lastB[N];
int best[N][N], cnt[N];
struct {
int ch, cnt;
} fA[N], fB[N];
int f[N][N], id[26];
int sumA(int l, int r, int c) { return (prefA[r][c] - prefA[l - 1][c]); }
int sumB(int l, int r, int c) { return (prefB[r][c] - prefB[l - 1][c]); }
void solve() {
cin >> s >> t;
for(char c : s)
if('a' <= c && c <= 'z') fA[++n].ch = c - 'a';
else fA[n].cnt = fA[n].cnt * 10 + (c - '0');
for(char c : t)
if ('a' <= c && c <= 'z') fB[++m].ch = c -'a';
else fB[m].cnt = fB[m].cnt * 10 + (c - '0');
FOR(i, 1, n) {
lastA[i] = id[fA[i].ch];
id[fA[i].ch] = i;
}
memset(id, 0, sizeof id);
FOR(i, 1, m) {
lastB[i] = id[fB[i].ch];
id[fB[i].ch] = i;
}
FOR(i, 1, n) FOR(j, 0, 25) prefA[i][j] = prefA[i - 1][j] + (fA[i].ch == j) * fA[i].cnt;
FOR(i, 1, m) FOR(j, 0, 25) prefB[i][j] = prefB[i - 1][j] + (fB[i].ch == j) * fB[i].cnt;
FOR(i, 1, n) FOR(j, 1, m) {
f[i][j] = max(f[i - 1][j], f[i][j - 1]);
if (fA[i].ch == fB[j].ch) {
int x = i, y = j, c = fA[i].ch;
bool IloveAT = true;
while(IloveAT) {
if (sumA(x, i, c) > sumB(y, j, c)) {
if (x && y)
f[i][j] = max(f[i][j], f[x - 1][y - 1] + sumB(y, j, c));
y = lastB[y];
if (y == 0) break;
} else {
if (x && y)
f[i][j] = max(f[i][j], f[x - 1][y - 1] + sumA(x, i, c));
x = lastA[x];
if (x == 0) break;
}
}
}
}
cout << f[n][m] << endl;
memset(f, 0, sizeof f);
FOR (i, 1, n) cnt[i] = cnt[i-1] + fA[i].cnt;
int ans = 0;
FOR (i, 1, n) FOR (j, 1, m){
if (fA[i].ch == fB[j].ch)
f[i][j] = min(fA[i].cnt, fB[j].cnt);
if (fA[i].ch == fB[j].ch && fA[i].cnt == fB[j].cnt)
best[i][j] = best[i-1][j-1] + 1;
}
FOR (i, 1, n) FOR (j, 1, m){
ans = max(ans, cnt[i] - cnt[i-best[i][j]] + f[i+1][j+1] + f[i-best[i][j]][j-best[i][j]]);
}
cout << ans;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) solve();
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHBhaXI8aWksIGludD4gaWlpOwoKI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaT0oYSk7IGk8PShiKTsgKytpKQojZGVmaW5lIEZPUlIoaSxhLGIpIGZvcihpbnQgaT0oYSk7IGk+PShiKTsgLS1pKQojZGVmaW5lIHJlcChpLCBuKSBmb3IoaW50IGk9MDsgaTwobik7ICsraSkKI2RlZmluZSByZWQoaSwgbikgZm9yKGludCBpPShuKS0xOyBpPj0wOyAtLWkpCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCiNkZWZpbmUgdGFzayAiaWNlYmVhcmF0IgoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBpbmYgPSAxZTkgKyAyNzA5MjAwODsKY29uc3QgbGwgTExpbmYgPSAxZTE4ICsgMjcwOTIwMDg7CmNvbnN0IGludCBOID0gNTAwMCArIDU7CmludCBuLCBtOwpzdHJpbmcgcywgdDsKaW50IHByZWZBW05dWzI2XSwgcHJlZkJbTl1bMjZdLCBsYXN0QVtOXSwgbGFzdEJbTl07CmludCBiZXN0W05dW05dLCBjbnRbTl07CnN0cnVjdCB7CiAgICBpbnQgY2gsICBjbnQ7Cn0gZkFbTl0sIGZCW05dOwppbnQgZltOXVtOXSwgaWRbMjZdOyAgIAoKaW50IHN1bUEoaW50IGwsIGludCByLCBpbnQgYykgeyByZXR1cm4gKHByZWZBW3JdW2NdIC0gcHJlZkFbbCAtIDFdW2NdKTsgfQppbnQgc3VtQihpbnQgbCwgaW50IHIsIGludCBjKSB7IHJldHVybiAocHJlZkJbcl1bY10gLSBwcmVmQltsIC0gMV1bY10pOyB9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IHMgPj4gdDsKICAgIGZvcihjaGFyIGMgOiBzKQogICAgICAgIGlmKCdhJyA8PSBjICYmIGMgPD0gJ3onKSBmQVsrK25dLmNoID0gYyAtICdhJzsKICAgICAgICBlbHNlIGZBW25dLmNudCA9IGZBW25dLmNudCAqIDEwICsgKGMgLSAnMCcpOwogICAgCiAgICBmb3IoY2hhciBjIDogdCkKICAgICAgICBpZiAoJ2EnIDw9IGMgJiYgYyA8PSAneicpIGZCWysrbV0uY2ggPSBjIC0nYSc7CiAgICAgICAgZWxzZSBmQlttXS5jbnQgPSBmQlttXS5jbnQgKiAxMCArIChjIC0gJzAnKTsKICAgIAogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICBsYXN0QVtpXSA9IGlkW2ZBW2ldLmNoXTsKICAgICAgICBpZFtmQVtpXS5jaF0gPSBpOwogICAgfQogICAgbWVtc2V0KGlkLCAwLCBzaXplb2YgaWQpOwogICAgRk9SKGksIDEsIG0pIHsKICAgICAgICBsYXN0QltpXSA9IGlkW2ZCW2ldLmNoXTsKICAgICAgICBpZFtmQltpXS5jaF0gPSBpOwogICAgfQoKICAgIEZPUihpLCAxLCBuKSBGT1IoaiwgMCwgMjUpIHByZWZBW2ldW2pdID0gcHJlZkFbaSAtIDFdW2pdICsgKGZBW2ldLmNoID09IGopICogZkFbaV0uY250OwogICAgRk9SKGksIDEsIG0pIEZPUihqLCAwLCAyNSkgcHJlZkJbaV1bal0gPSBwcmVmQltpIC0gMV1bal0gKyAoZkJbaV0uY2ggPT0gaikgKiBmQltpXS5jbnQ7CgogICAgRk9SKGksIDEsIG4pIEZPUihqLCAxLCBtKSB7CiAgICAgICAgZltpXVtqXSA9IG1heChmW2kgLSAxXVtqXSwgZltpXVtqIC0gMV0pOwoKICAgICAgICBpZiAoZkFbaV0uY2ggPT0gZkJbal0uY2gpIHsKICAgICAgICAgICAgaW50IHggPSBpLCB5ID0gaiwgYyA9IGZBW2ldLmNoOwogICAgICAgICAgICBib29sIElsb3ZlQVQgPSB0cnVlOwogICAgICAgICAgICB3aGlsZShJbG92ZUFUKSB7CiAgICAgICAgICAgICAgICBpZiAoc3VtQSh4LCBpLCBjKSA+IHN1bUIoeSwgaiwgYykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoeCAmJiB5KSAKICAgICAgICAgICAgICAgICAgICAgICAgZltpXVtqXSA9IG1heChmW2ldW2pdLCBmW3ggLSAxXVt5IC0gMV0gKyBzdW1CKHksIGosIGMpKTsKICAgICAgICAgICAgICAgICAgICB5ID0gbGFzdEJbeV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHkgPT0gMCkgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICh4ICYmIHkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZbaV1bal0gPSBtYXgoZltpXVtqXSwgZlt4IC0gMV1beSAtIDFdICsgc3VtQSh4LCBpLCBjKSk7CiAgICAgICAgICAgICAgICAgICAgeCA9IGxhc3RBW3hdOwogICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDApIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBmW25dW21dIDw8IGVuZGw7CgogICAgbWVtc2V0KGYsIDAsIHNpemVvZiBmKTsKICAgIEZPUiAoaSwgMSwgbikgY250W2ldID0gY250W2ktMV0gKyBmQVtpXS5jbnQ7CiAgICBpbnQgYW5zID0gMDsKICAgIEZPUiAoaSwgMSwgbikgRk9SIChqLCAxLCBtKXsKICAgICAgICBpZiAoZkFbaV0uY2ggPT0gZkJbal0uY2gpCiAgICAgICAgICAgIGZbaV1bal0gPSBtaW4oZkFbaV0uY250LCBmQltqXS5jbnQpOwogICAgICAgIGlmIChmQVtpXS5jaCA9PSBmQltqXS5jaCAmJiBmQVtpXS5jbnQgPT0gZkJbal0uY250KQogICAgICAgICAgICBiZXN0W2ldW2pdID0gYmVzdFtpLTFdW2otMV0gKyAxOwogICAgfQogICAgRk9SIChpLCAxLCBuKSBGT1IgKGosIDEsIG0pewogICAgICAgIGFucyA9IG1heChhbnMsIGNudFtpXSAtIGNudFtpLWJlc3RbaV1bal1dICsgZltpKzFdW2orMV0gKyBmW2ktYmVzdFtpXVtqXV1bai1iZXN0W2ldW2pdXSk7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKICAgIAp9ICAgCgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IHRjID0gMTsKLy8gICAgIGNpbiA+PiB0YzsKICAgIHdoaWxlKHRjLS0pIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=