#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int N = 100111;
struct S {
  int i, j, t;
  S(int a, int b, int c) : i(a), j(b), t(c) {}
};
int n, k;
char m[2][N];
bool SPFA() {
  int d[2][N];
  for (int i(0), _n(2); i < _n; ++i)
    for (int j(0), _n(N); j < _n; ++j) d[i][j] = (1 << 29);
  queue<S> q;
  q.push(S(0, 1, 0));
  d[0][1] = 0;
  while (!q.empty()) {
    S t = q.front();
    q.pop();
    if (t.j + k > n) return true;
    if (m[t.i][t.j + 1] != 'X' && d[t.i][t.j + 1] > t.t + 1) {
      d[t.i][t.j + 1] = t.t + 1;
      if (t.t + 1 < t.j + 1) q.push(S(t.i, t.j + 1, t.t + 1));
    }
    if (m[t.i][t.j - 1] != 'X' && d[t.i][t.j - 1] > t.t + 1) {
      d[t.i][t.j - 1] = t.t + 1;
      if (t.t + 1 < t.j - 1) q.push(S(t.i, t.j - 1, t.t + 1));
    }
    if (m[1 - t.i][t.j + k] != 'X' && d[1 - t.i][t.j + k] > t.t + 1) {
      d[1 - t.i][t.j + k] = t.t + 1;
      if (t.t + 1 < t.j + k) q.push(S(1 - t.i, t.j + k, t.t + 1));
    }
  }
  return false;
}
int main() {
  scanf("%d%d%s%s", &n, &k, m[0] + 1, m[1] + 1);
  puts(SPFA() ? "YES" : "NO");
  return 0;
}
