#include <bits/stdc++.h>
using namespace std;
const int N = 3010;
const int mod = 998244353;
inline void add(int &a, int b) {
  a += b;
  if (a >= mod) a -= mod;
}
int n, m, dp[2][N][2];
char s[N], t[N];
int main() {
  scanf("%s", s);
  scanf("%s", t);
  n = strlen(s);
  m = strlen(t);
  reverse(s, s + n);
  memset(dp, 0, sizeof(dp));
  dp[0][0][0] = 1;
  int k;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= m; j++) {
      dp[1][j][0] = 0;
      dp[1][j][1] = 0;
    }
    for (int j = 0; j <= m; j++) {
      if (j < m && s[i - 1] == t[j]) {
        add(dp[1][j + 1][1], dp[0][j][0]);
        add(dp[1][j + 1][1], dp[0][j][1]);
      }
      k = n - (i - j);
      if (k >= m) {
        add(dp[1][j][1], dp[0][j][0]);
        add(dp[1][j][1], dp[0][j][1]);
        if (j == m) {
          add(dp[1][j][1], dp[0][j][0]);
          add(dp[1][j][1], dp[0][j][1]);
        }
        add(dp[1][j][0], dp[0][j][0]);
      } else if (s[i - 1] == t[k]) {
        add(dp[1][j][1], dp[0][j][0]);
        add(dp[1][j][1], dp[0][j][1]);
      }
    }
    swap(dp[0], dp[1]);
  }
  int ans = 0;
  for (int i = 0; i <= m; i++) {
    add(ans, dp[0][i][1]);
  }
  printf("%d\n", ans);
  return 0;
}
