#include <bits/stdc++.h>
using namespace std;
int n, g;
char s[2][100005];
int t[2][100005];
struct Node {
  int k, w;
  Node(int x, int y) { k = x, w = y; }
};
queue<Node> que;
int main() {
  scanf("%d%d%s%s", &n, &g, s[0], s[1]);
  que.push(Node(0, 0));
  memset(t, -1, sizeof(t));
  t[0][0] = 0;
  bool ans = false;
  while (!que.empty()) {
    int k = que.front().k, w = que.front().w;
    que.pop();
    if (w + g >= n) {
      ans = true;
      break;
    }
    if (t[k][w + 1] == -1) {
      t[k][w + 1] = t[k][w] + 1;
      if (w + 1 >= t[k][w + 1] && s[k][w + 1] == '-') que.push(Node(k, w + 1));
    }
    if (t[k][w - 1] == -1) {
      t[k][w - 1] = t[k][w] + 1;
      if (w - 1 >= t[k][w - 1] && s[k][w - 1] == '-') que.push(Node(k, w - 1));
    }
    if (t[k ^ 1][w + g] == -1) {
      t[k ^ 1][w + g] = t[k][w] + 1;
      if (w + g >= t[k ^ 1][w + g] && s[k ^ 1][w + g] == '-')
        que.push(Node(k ^ 1, w + g));
    }
  }
  printf(ans ? "YES\n" : "NO\n");
  return 0;
}
