#include <bits/stdc++.h>
using namespace std;
char s[3009], t[3009];
long long dp[3009][3009];
int n, m;
long long bigmod(long long a, long long p) {
  long long r = 1ll;
  while (p) {
    if ((p & 1ll)) {
      r = (a * r) % 998244353ll;
    }
    a = (a * a) % 998244353ll;
    p >>= 1;
  }
  return r;
}
long long func(int i, int j) {
  if (i < 0) {
    return 1ll;
  }
  if (j >= m) {
    return bigmod(2, i + 1);
  }
  long long &ret = dp[i][j];
  if (~ret) return ret;
  ret = 0;
  if (s[i] == t[j]) ret = func(i - 1, j + 1);
  if (j + i >= m || (s[i] == t[i + j])) ret += func(i - 1, j);
  if (ret >= 998244353ll) ret -= 998244353ll;
  return ret;
}
int main() {
  scanf("%s", s);
  scanf("%s", t);
  n = strlen(s);
  m = strlen(t);
  memset(dp, -1, sizeof(dp));
  long long ans = 0;
  for (int i = n; i >= m; i--) {
    ans += func(i - 1, 0);
    if (ans >= 998244353ll) ans -= 998244353ll;
  }
  if (ans >= 998244353ll) ans -= 998244353ll;
  printf("%lld\n", ans);
  return 0;
}
