#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for(i = 0; i < n; i++) #define int long long using namespace std; using namespace atcoder; using mint = modint998244353; int n; string s[200]; mint dp[200][200][200]; signed main() { int i, j, k; cin >> n; rep(i, n) cin >> s[i]; if (s[0][0] != s[n - 1][n - 1]) { cout << 0 << endl; return 0; } dp[0][0][n - 1] = 1; rep(i, n) { rep(j, n) { for (k = n - 1; k >= 0; k--) { if (dp[i][j][k] == 0) continue; if (i + j == n - 1) continue; int l = 2 * n - 2 - i - j - k; if (j + 1 < n && l - 1 >= 0 && s[i][j + 1] == s[k][l - 1]) { dp[i][j + 1][k] += dp[i][j][k]; } if (j + 1 < n && k - 1 >= 0 && s[i][j + 1] == s[k - 1][l]) { dp[i][j + 1][k - 1] += dp[i][j][k]; } if (i + 1 < n && l - 1 >= 0 && s[i + 1][j] == s[k][l - 1]) { dp[i + 1][j][k] += dp[i][j][k]; } if (i + 1 < n && k - 1 >= 0 && s[i + 1][j] == s[k - 1][l]) { dp[i + 1][j][k - 1] += dp[i][j][k]; } } } } mint ans = 0; rep(i, n) { ans += dp[i][n - 1 - i][i]; } cout << ans.val() << endl; return 0; }