#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:128777216")
using namespace std;
bool d[2][200000];
char a[100010];
char b[100010];
struct Pos {
  int id;
  int pos;
  int t;
  void init(int id, int pos, int t) {
    this->id = id;
    this->pos = pos;
    this->t = t;
    d[id][pos] = 1;
  }
} st[300000];
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  scanf("%s", a);
  scanf("%s", b);
  for (int i = 0; i < n; i++) {
    if (a[i] == 'X') {
      d[0][i] = 1;
    }
    if (b[i] == 'X') {
      d[1][i] = 1;
    }
  }
  st[0].init(0, 0, 0);
  for (int d = 0, u = 1; d < u; d++) {
    int id = st[d].id, pos = st[d].pos, t = st[d].t + 1;
    if (pos < st[d].t) continue;
    if (pos + k >= n) {
      printf("YES");
      return 0;
    }
    if (pos > 0 && !::d[id][pos - 1]) {
      st[u++].init(id, pos - 1, t);
    }
    if (!::d[id][pos + 1]) {
      st[u++].init(id, pos + 1, t);
    }
    if (!::d[id ^ 1][pos + k]) {
      st[u++].init(id ^ 1, pos + k, t);
    }
  }
  printf("NO");
  return 0;
}
