#include <bits/stdc++.h>
using namespace std;
char str[300010], s[300010];
int p[300010], a[300010];
long long dp[300010], sum[300010], S[300010];
void add(long long &a, long long b) {
  if (b > 1000000007) b -= 1000000007;
  a += b;
  if (a > 1000000007) a -= 1000000007;
}
int main() {
  scanf("%s", s + 1);
  scanf("%s", str);
  int M = strlen(str), N, i, j;
  str[M] = '*';
  strcpy(str + M + 1, s + 1);
  memset(p, -1, sizeof(p));
  int cnt = 0;
  N = strlen(str);
  for (i = 0; i < N - 1; i++) {
    j = p[i];
    while (j >= 0 && str[j + 1] != str[i + 1]) j = p[j];
    if (str[j + 1] == str[i + 1]) j++;
    p[i + 1] = j;
    if (p[i + 1] == M - 1) {
      a[cnt++] = i - M + 1;
    }
  }
  if (cnt == 0) {
    puts("0");
    return 0;
  }
  N = strlen(s + 1);
  S[0] = 1;
  sum[0] = 1;
  for (i = 1; i <= N; i++) {
    j = upper_bound(a, a + cnt, i) - a;
    if (j) {
      j--;
      int po = a[j] - M;
      add(dp[i], S[po]);
      add(sum[i], sum[i - 1] + dp[i]);
      add(S[i], S[i - 1] + sum[i]);
    } else {
      add(sum[i], sum[i - 1]);
      add(S[i], S[i - 1] + sum[i]);
    }
  }
  printf("%I64d\n", (sum[N] + 1000000007 - 1) % 1000000007);
  return 0;
}
