func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long N = 2e6 + 10;   const long long mod = 998244353;   long long power(long long x, long long y) {     x = x % mod, y = y % (mod - 1);     long long ans = 1;     while (y > 0) {       if (y & 1) {         ans = (1ll * x * ans) % mod;       }       y >>= 1;       x = (1ll * x * x) % mod;     }     return ans;   }   long long add(long long a, long long b) { return (a % mod + b % mod) % mod; }   long long mul(long long a, long long b) { return (a % mod * b % mod) % mod; }   long long n, k;   const long long K = 210;   vector<long long> a(N);   vector<long long> b(N);   multiset<long long> st;   long long pow2[N];   void power_2() {     pow2[0] = 1;     long long x = 1;     long long cnt = 1;     while (cnt < 3e5) {       pow2[cnt] = mul(pow2[cnt - 1], 2);       cnt++;     }   }   int32_t main() {     long long nx, mx;     cin >> nx >> mx;     string s, t;     cin >> s >> t;     power_2();     long long temp = 0, ans = 0;     long long n = min(s.size(), t.size());     for (long long i = 0; i < mx; i++) {       if (i < nx and s[nx - i - 1] ==  1 ) temp = add(temp, pow2[i]);       if (t[mx - i - 1] ==  1 ) ans = add(ans, temp);     }     cout << ans;     return 0;   }   