#include <bits/stdc++.h>
using namespace std;
struct rec {
  int x, y;
} p;
char a[2][100010];
queue<rec> q;
int d[2][100010], n, k;
bool bfs() {
  memset(d, -1, sizeof(d));
  q.push((rec){0, 1});
  d[0][1] = 0;
  while (q.size()) {
    p = q.front();
    q.pop();
    if (p.y + k > n) return 1;
    if (a[p.x][p.y + 1] == '-' && d[p.x][p.y + 1] == -1 &&
        d[p.x][p.y] + 1 < p.y + 1)
      q.push((rec){p.x, p.y + 1}), d[p.x][p.y + 1] = d[p.x][p.y] + 1;
    if (a[p.x][p.y - 1] == '-' && d[p.x][p.y - 1] == -1 &&
        d[p.x][p.y] + 1 < p.y - 1)
      q.push((rec){p.x, p.y - 1}), d[p.x][p.y - 1] = d[p.x][p.y] + 1;
    if (a[p.x ^ 1][p.y + k] == '-' && d[p.x ^ 1][p.y + k] == -1 &&
        d[p.x][p.y] + 1 < p.y + k)
      q.push((rec){p.x ^ 1, p.y + k}), d[p.x ^ 1][p.y + k] = d[p.x][p.y] + 1;
  }
  return 0;
}
int main() {
  cin >> n >> k;
  scanf("%s%s", a[0] + 1, a[1] + 1);
  if (bfs())
    puts("YES");
  else
    puts("NO");
  return 0;
}
