#include #include using namespace std; using ll = long long; #define rep(i, n) for (int i = 0; i < (int)(n); i++) using mint = atcoder::modint998244353; int main(){ int n; cin >> n; vectors(n); rep(i,n)cin >> s[i]; map,mint>memo; function)>dfs=[&](tuple in){ auto [x,y,a,b]=in; if(x+y == a+b){ return mint(x==a?1:0); } if(x>a || y>b)return mint(0); if(s[x][y]!=s[a][b])return mint(0); if(memo.count(in))return memo[in]; mint ans=0; ans+=dfs(make_tuple(x+1,y,a-1,b)); ans+=dfs(make_tuple(x,y+1,a-1,b)); ans+=dfs(make_tuple(x+1,y,a,b-1)); ans+=dfs(make_tuple(x,y+1,a,b-1)); return memo[in]=ans; }; cout << dfs(make_tuple(0,0,n-1,n-1)).val() << endl; }