#include <bits/stdc++.h>
using namespace std;
namespace myrand {
mt19937 mt(chrono::system_clock::now().time_since_epoch() /
           chrono::microseconds(1));
long long Int(long long l, long long r) {
  return uniform_int_distribution<long long>(l, r)(mt);
}
}  // namespace myrand
using namespace myrand;
auto ss = chrono::system_clock::now();
double remain_time() {
  auto en = chrono::system_clock::now();
  return (chrono::duration_cast<chrono::nanoseconds>(en - ss).count() * 1e-9);
}
long long cnt;
long long dp[3001][3001];
const long long mod = 998244353;
void solve(string s, string t) {
  int n = s.size();
  int m = t.size();
  for (int i = 0; i <= n; i++) dp[i][i] = 1;
  for (int len = 1; len <= n; len++)
    for (int i = 0; i + len <= n; i++) {
      int j = i + len;
      if (i >= m || s[len - 1] == t[i]) dp[i][j] += dp[i + 1][j];
      if (j > m || s[len - 1] == t[j - 1]) dp[i][j] += dp[i][j - 1];
      dp[i][j] %= mod;
    }
  for (int j = m; j <= n; j++) cnt = (cnt + dp[0][j]) % mod;
  cout << cnt;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  string s, t;
  cin >> s;
  cin >> t;
  solve(s, t);
  return 0;
}
