func_code_string: #include <bits/stdc++.h>   using namespace std;   struct rec {     int x, y;   } p;   char a[2][100010];   queue<rec> q;   int d[2][100010], n, k;   bool bfs() {     memset(d, -1, sizeof(d));     q.push((rec){0, 1});     d[0][1] = 0;     while (q.size()) {       p = q.front();       q.pop();       if (p.y + k > n) return 1;       if (a[p.x][p.y + 1] ==  -  && d[p.x][p.y + 1] == -1 &&           d[p.x][p.y] + 1 < p.y + 1)         q.push((rec){p.x, p.y + 1}), d[p.x][p.y + 1] = d[p.x][p.y] + 1;       if (a[p.x][p.y - 1] ==  -  && d[p.x][p.y - 1] == -1 &&           d[p.x][p.y] + 1 < p.y - 1)         q.push((rec){p.x, p.y - 1}), d[p.x][p.y - 1] = d[p.x][p.y] + 1;       if (a[p.x ^ 1][p.y + k] ==  -  && d[p.x ^ 1][p.y + k] == -1 &&           d[p.x][p.y] + 1 < p.y + k)         q.push((rec){p.x ^ 1, p.y + k}), d[p.x ^ 1][p.y + k] = d[p.x][p.y] + 1;     }     return 0;   }   int main() {     cin >> n >> k;     scanf( %s%s , a[0] + 1, a[1] + 1);     if (bfs())       puts( YES );     else       puts( NO );     return 0;   }   