func_code_string: #include <bits/stdc++.h>   int a[2][200000], b[2][200000], c[2][200000], n, m, i, j, x, y, z;   char s[2][200000 + 1];   int main() {     scanf( %d%d%s%s , &n, &m, s[0], s[1]);     for (i = n - 1, x = n; i >= 0; i--) {       if (s[0][i] ==  X ) x = i;       c[0][i] = x;     }     for (i = n - 1, x = n; i >= 0; i--) {       if (s[1][i] ==  X ) x = i;       c[1][i] = x;     }     i = 0;     while (i < n) {       ++z;       while (i < n && s[0][i] ==  X  && s[1][i] ==  X ) ++i;       if (i < n) x = s[0][i] ==  X ;       while (i < n) {         for (; i < n && s[x][i] ==  . ; i++) a[x][i] = ++y, b[x][i] = z;         if (i < n && s[x ^ 1][i] ==  .  && s[x ^ 1][i - 1] ==  . )           x ^= 1, --i;         else           break;       }     }     while (m--) {       scanf( %d%d , &x, &y);       --x, --y;       i = x % n, j = y % n;       x /= n, y /= n;       if (i > j || (i == j && a[x][i] > a[y][j]))         z = i, i = j, j = z, z = x, x = y, y = z;       if (x == y && c[x][i] == c[y][j])         printf( %d n , j - i);       else {         if (c[x][i] - 1 <= j)           z = c[x][i] - i - 1, i = c[x][i] - 1;         else           z = j - i, i = j;         if (!a[x][i]) x ^= 1, ++z;         if (!a[y][j]) y ^= 1, ++z;         if (a[y][j] > a[x][i])           z += a[y][j] - a[x][i];         else           z += a[x][i] - a[y][j];         printf( %d n , b[y][j] == b[x][i] ? z : -1);       }     }     return 0;   }   