#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10, mod = 1e9 + 7;
int d[maxn], sum[maxn], S[maxn];
int b[2] = {41, 47}, p[2][maxn], m[2] = {1000000007, 998244353}, h[2][maxn];
char s[maxn], t[maxn];
void add(int &x, int y) {
  x += y;
  if (x >= mod) x -= mod;
}
void init(int n) {
  p[0][0] = p[1][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < 2; j++) p[j][i] = 1ll * p[j][i - 1] * b[j] % m[j];
}
int get(int l, int r, int i) {
  return (h[i][r] - 1ll * h[i][l - 1] * p[i][r - l + 1] % m[i] + m[i]) % m[i];
}
int ok(int l, int r, int *H) {
  if (get(l, r, 0) != H[0] || get(l, r, 1) != H[1]) return 0;
  return 1;
}
int main() {
  init(1e5);
  scanf("%s%s", s + 1, t + 1);
  int n = strlen(s + 1);
  int len = strlen(t + 1);
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < 2; j++)
      h[j][i] = (1ll * h[j][i - 1] * b[j] + (s[i] - 'a' + 1)) % m[j];
  int H[2] = {0, 0};
  for (int i = 1; i <= len; i++)
    for (int j = 0; j < 2; j++)
      H[j] = (1ll * H[j] * b[j] + t[i] - 'a' + 1) % m[j];
  int pre = 0;
  for (int i = len; i <= n; i++) {
    sum[i] = sum[i - 1];
    S[i] = S[i - 1];
    if (ok(i - len + 1, i, H)) {
      int x = i - len + 1;
      add(d[i], S[x - 1]);
      add(d[i], x);
      pre = x;
    } else if (pre) {
      add(d[i], S[pre - 1]);
      add(d[i], pre);
    }
    add(sum[i], d[i]);
    add(S[i], sum[i]);
  }
  cout << sum[n];
}
