#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, T b) {
  if (b > a) a = b;
}
long long dp[5061][5061];
long long sum[5061];
char s[5061];
char t[5061];
int n, m;
int main() {
  scanf("%s%s", s, t);
  m = strlen(s);
  n = strlen(t);
  memset((dp), 0, sizeof(dp));
  for (int i = (0); i < (int)(5061); i++) dp[i][0] = 1;
  long long ret = 0;
  for (int i = (0); i < (int)(m); i++) {
    sum[0] = dp[i][0];
    for (int j = (0); j < (int)(n); j++) {
      sum[j + 1] = sum[j] + dp[i][j + 1];
      if (sum[j + 1] >= 1000000007) sum[j + 1] -= 1000000007;
    }
    for (int j = (0); j < (int)(n); j++) {
      if (s[i] == t[j]) {
        dp[i + 1][j + 1] += sum[j];
        ret += sum[j];
        if (ret >= 1000000007) ret -= 1000000007;
        if (dp[i + 1][j + 1] >= 1000000007) dp[i + 1][j + 1] -= 1000000007;
      }
    }
  }
  ret %= 1000000007;
  ret += 1000000007;
  ret %= 1000000007;
  cout << ret << endl;
  return 0;
}
