#include <bits/stdc++.h>
using namespace std;
int way[3][2] = {{0, 1}, {0, -1}, 1};
char str[2][100005];
int n, k;
struct Node {
  int x, y, step;
  bool check() {
    if (x >= 0 && y >= 0 && x < 2 && y < n) return true;
  }
} s, e, u, v;
bool bfs() {
  queue<Node> que;
  bool flag[2][100005];
  memset(flag, false, sizeof(flag));
  flag[s.x][s.y] = true;
  que.push(s);
  while (!que.empty()) {
    u = que.front();
    que.pop();
    for (int i = 0; i < 3; i++) {
      v = u;
      v.x = (v.x + way[i][0]) % 2;
      v.y += way[i][1];
      v.step++;
      if (v.y >= n) return true;
      if (v.check() && v.y >= v.step && str[v.x][v.y] == '-' &&
          flag[v.x][v.y] == false) {
        flag[v.x][v.y] = true;
        que.push(v);
      }
    }
  }
  return false;
}
int main() {
  while (scanf("%d%d", &n, &k) != EOF) {
    scanf("%s%s", str[0], str[1]);
    way[2][1] = k;
    s.x = 0;
    s.y = 0;
    s.step = 0;
    if (bfs())
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
}
