#include <bits/stdc++.h>
using namespace std;
struct state {
  int wall, ht, t;
};
int N, K;
string W[2];
bool seen[2][100001];
int main() {
  cin >> N >> K;
  cin >> W[0] >> W[1];
  queue<state> Q;
  {
    state start = {0, 0, 0};
    Q.push(start);
    seen[0][0] = 1;
  }
  while (Q.size()) {
    state R = Q.front();
    Q.pop();
    if (R.ht >= N - K) {
      cout << "YES\n";
      return 0;
    }
    if (R.ht > 0 && W[R.wall][R.ht - 1] == '-' && R.ht - 1 >= R.t + 1) {
      state tmp = {R.wall, R.ht - 1, R.t + 1};
      if (!seen[R.wall][R.ht - 1]) {
        seen[R.wall][R.ht - 1] = 1;
        Q.push(tmp);
      }
    }
    if (R.ht < N - 1 && W[R.wall][R.ht + 1] == '-') {
      state tmp = {R.wall, R.ht + 1, R.t + 1};
      if (!seen[R.wall][R.ht + 1]) {
        seen[R.wall][R.ht + 1] = 1;
        Q.push(tmp);
      }
    }
    if (R.ht + K < N && W[1 - R.wall][R.ht + K] == '-') {
      state tmp = {1 - R.wall, R.ht + K, R.t + 1};
      if (!seen[1 - R.wall][R.ht + K]) {
        seen[1 - R.wall][R.ht + K] = 1;
        Q.push(tmp);
      }
    }
  }
  cout << "NO\n";
}
