#include <bits/stdc++.h>
using namespace std;
const int maxn = 200008;
int n, k, l, r;
char g[2][maxn];
bool f[2][maxn];
struct arr {
  int t, s, x;
} h[maxn];
bool Add(int t, int s, int x) {
  if (t >= x) return 0;
  if (x > n) return 1;
  if (f[s][x]) return 0;
  if (g[s][x] == 'X') return 0;
  f[s][x] = 1;
  ++r;
  h[r].t = t;
  h[r].s = s;
  h[r].x = x;
  return 0;
}
bool Work() {
  h[1].t = 0;
  h[1].s = 0;
  h[1].x = 1;
  l = 1, r = 1;
  f[0][1] = 1;
  while (l <= r) {
    int t = h[l].t, s = h[l].s, x = h[l].x;
    ++l;
    if (Add(t + 1, s, x + 1)) return 1;
    if (Add(t + 1, s, x - 1)) return 1;
    if (Add(t + 1, s ^ 1, x + k)) return 1;
  }
  return 0;
}
int main() {
  scanf("%d%d%*c", &n, &k);
  scanf("%s", &g[0][1]);
  scanf("%s", &g[1][1]);
  if (Work())
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
