void test()
{
string s, t;
cin >> t >> s;
ll slen = s.length(), tlen = t.length();
vector<ll> z(slen, 0), p(tlen, 0);
ll resz = 0, rest = 0;
z[0] = slen;
resz ^= 1 * (z[0] + 1);
for (ll i = 1, l, r = 0; i < slen; ++i)
{
if (i <= r)
z[i] = min(r - i + 1, z[i - l]);
while (i + z[i] < slen && s[z[i]] == s[i + z[i]])
z[i]++;
if (r < i + z[i] - 1)
l = i, r = i + z[i] - 1;
resz ^= (i + 1) * (z[i] + 1);
}
for (ll i = 0, l, r = -1; i < tlen; ++i)
{
if (i <= r)
p[i] = min(r - i + 1, p[i - l]);
while (p[i] < slen && i + p[i] < tlen && t[i + p[i]] == s[p[i]])
p[i]++;
if (r < i + p[i] - 1)
l = i, r = i + p[i] - 1;
rest ^= (i + 1) * (p[i] + 1);
}
cout << resz << endl
<< rest << endl;
}