#include <bits/stdc++.h>
#pragma warning(disable : 4786)
using namespace std;
char s[2][100002];
int v[2][100002];
int n, k;
struct node {
  int f, t, pos;
};
int bfs() {
  queue<node> q;
  node z;
  memset(v, 0, sizeof(v));
  z.f = 0;
  z.pos = 0;
  z.t = 0;
  q.push(z);
  while (!q.empty()) {
    z = q.front();
    q.pop();
    if (z.pos + k >= n) return 1;
    if (s[z.f][z.pos + 1] == '-' && v[z.f][z.pos + 1] == 0) {
      node t;
      v[z.f][z.pos + 1] = 1;
      t.f = z.f;
      t.t = z.t + 1;
      t.pos = z.pos + 1;
      q.push(t);
    }
    if (s[z.f ^ 1][z.pos + k] == '-' && v[z.f ^ 1][z.pos + k] == 0) {
      node t;
      v[z.f ^ 1][z.pos + k] = 1;
      t.f = z.f ^ 1;
      t.t = z.t + 1;
      t.pos = z.pos + k;
      q.push(t);
    }
    if (z.pos > z.t + 1 && s[z.f][z.pos - 1] == '-' && v[z.f][z.pos - 1] == 0) {
      node t;
      v[z.f][z.pos - 1] = 1;
      t.f = z.f;
      t.t = z.t + 1;
      t.pos = z.pos - 1;
      q.push(t);
    }
  }
  return 0;
}
int main() {
  while (scanf("%d%d", &n, &k) != EOF) {
    scanf("%s%s", s[0], s[1]);
    if (bfs())
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
}
