#include #include #include #include using namespace std; using mint=atcoder::modint998244353; int N; string U,V; mint ans; mint p2[2<<17]; vectorcalc(string u,int idx) { vectorA; for(int i=u.size();i>idx;i--) { if(A.empty())A.push_back(p2[N-i+1]-1); else A.push_back(p2[N-i]); } return A; } main() { cin>>N>>U>>V; p2[0]=1; for(int i=1;i<=N;i++)p2[i]=p2[i-1]+p2[i-1]; for(int i=1;iA=calc(U,idx),B=calc(V,idx); if(A.empty()||B.empty()) { A.push_back(p2[N]-1-(p2[N-idx+1]-1)+1); A.back()+=p2[N-idx]-1; } else { A.push_back(p2[N]-1-(p2[N-idx+1]-1)+1); } while(!B.empty()) { A.push_back(B.back()); B.pop_back(); } mint s=0; for(mint a:A)s+=a; assert(s==p2[N]-1); vectorSA1(A.size()),SA2(A.size()); for(int j=A.size();j--;) { if(j+1