#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e3 + 33;
const int mod = 998244353;
int dp[maxn][maxn];
bool isvalid(int a, int b) { return (a == b) || (b == '?'); }
void add(int& a, int b) { a = (1LL * a + b) % mod; }
int main() {
  string s, t;
  cin >> s >> t;
  int n = s.size(), m = t.size();
  int tmp = m;
  while (tmp < n) {
    t += '?';
    tmp++;
  }
  for (int i = 0; i < n; i++) {
    dp[i][i] = (s[0] == t[i] || t[i] == '?' ? 2 : 0);
  }
  for (int len = 2; len <= n; len++) {
    for (int i = 0; i + len - 1 < n; i++) {
      int l = i;
      int r = i + len - 1;
      if (isvalid(s[len - 1], t[l])) {
        add(dp[l][r], dp[l + 1][r]);
      }
      if (isvalid(s[len - 1], t[r])) {
        add(dp[l][r], dp[l][r - 1]);
      }
    }
  }
  int ans = 0;
  for (int i = m - 1; i < n; i++) {
    add(ans, dp[0][i]);
  }
  cout << ans << "\n";
  return 0;
}
