#include <bits/stdc++.h>
using namespace std;
struct hz {
  int t;
  int p;
  bool ix;
  hz(int t, int p, int ix) : t(t), p(p), ix(ix) {}
};
int was[2][100011];
int n, k;
string w[2];
#pragma comment(linker, "/STACK:1234567890")
int main() {
  cin >> n >> k >> w[0] >> w[1];
  queue<hz> q;
  q.push(hz(0, 0, 0));
  memset(was, false, sizeof(was));
  while (!q.empty()) {
    hz s = q.front();
    q.pop();
    if (was[s.ix][s.p]) continue;
    was[s.ix][s.p] = true;
    if (s.p + 1 >= n || s.p + k >= n) {
      cout << "YES";
      return 0;
    }
    if (!was[s.ix ^ 1][s.p + k] && w[s.ix ^ 1][s.p + k] != 'X') {
      q.push(hz(s.t + 1, s.p + k, s.ix ^ 1));
    }
    if (!was[s.ix][s.p + 1] && w[s.ix][s.p + 1] != 'X') {
      q.push(hz(s.t + 1, s.p + 1, s.ix));
    }
    if (s.p - 1 > s.t && !was[s.ix ^ 1][s.p + k] && w[s.ix][s.p - 1] != 'X') {
      q.push(hz(s.t + 1, s.p - 1, s.ix));
    }
  }
  cout << "NO";
}
