#include <bits/stdc++.h>
using namespace std;
int l1, l2;
string s1,s2;
int dp[5000][5000];
int rec(int i, int j) {
if(dp[i][j] != -1) return dp[i][j];
if( i == l1 || j == l2) return 0;
int ans = 0;
ans += rec(i, j + 1);
if(s1[i] == s2[j]) {
ans +=1 + rec(i + 1, j + 1);
}
return dp[i][j] = ans;
}
int main() {
memset(dp, -1, sizeof(dp));
cin >> s1 >> s2;
l1 = s1.size();
l2 = s2.size();
cout << rec(0,0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBsMSwgbDI7CnN0cmluZyBzMSxzMjsKaW50IGRwWzUwMDBdWzUwMDBdOwppbnQgcmVjKGludCBpLCBpbnQgaikgewoJaWYoZHBbaV1bal0gIT0gLTEpIHJldHVybiBkcFtpXVtqXTsKCWlmKCBpID09IGwxIHx8IGogPT0gbDIpIHJldHVybiAwOwoJaW50IGFucyA9IDA7CglhbnMgKz0gcmVjKGksIGogKyAxKTsKCWlmKHMxW2ldID09IHMyW2pdKSB7CgkJYW5zICs9MSArIHJlYyhpICsgMSwgaiArIDEpOwoJfQoJcmV0dXJuIGRwW2ldW2pdID0gYW5zOwp9CgppbnQgbWFpbigpIHsKCW1lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwoJY2luID4+IHMxID4+IHMyOwoJbDEgPSBzMS5zaXplKCk7CglsMiA9IHMyLnNpemUoKTsgCgljb3V0IDw8IHJlYygwLDApOwp9