Code
#include <iostream>
#include <string.h>
#define ll long long
using namespace std;
const int N = 2e7 + 10;
int n, m, z[N], p[N]; char s[N], t[N];
signed main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
cin >> s + 1 >> t + 1;
n = strlen(s + 1), m = strlen(t + 1);
z[1] = m;
for (int i = 2, r = 0, l; i <= m; ++ i) {
if (i <= r) z[i] = min(z[i - l + 1], r - i + 1);
while (i + z[i] <= n && t[1 + z[i]] == t[i + z[i]]) ++ z[i];
if (i + z[i] - 1 > r) r = i + z[i] - 1, l = i;
}
ll ans = 0;
for (int i = 1; i <= m; ++ i) ans ^= (ll) i * (z[i] + 1);
cout << ans << '\n';
for (int i = 1, r = 0, l; i <= n; ++ i) {
if (i <= r) p[i] = min(z[i - l + 1], r - i + 1);
while (i + p[i] <= n && 1 + p[i] <= m && s[i + p[i]] == t[1 + p[i]]) ++ p[i];
if (i + p[i] - 1 > r) r = i + p[i] - 1, l = i;
}
ans = 0;
for (int i = 1; i <= n; ++ i) ans ^= (ll) i * (p[i] + 1);
cout << ans << '\n';
return 0;
}