#include <bits/stdc++.h>
using namespace std;
char str[2][100010];
int vis[2][100010];
struct node {
  int x, y, step;
};
int dd[2][2] = {{0, 1}, {0, -1}}, k;
int bfs(int si, int sj, int n) {
  queue<node> qu;
  memset(vis, 0, sizeof(vis));
  node t, tt;
  t.x = si, t.y = sj, t.step = 0;
  qu.push(t);
  vis[t.x][t.y] = 1;
  while (!qu.empty()) {
    t = qu.front();
    qu.pop();
    tt.step = t.step + 1;
    for (int i = 0; i < 2; i++) {
      tt.x = t.x + dd[i][0];
      tt.y = t.y + dd[i][1];
      if (str[tt.x][tt.y] == 'X' || vis[tt.x][tt.y]) continue;
      if (tt.y < tt.step) continue;
      vis[tt.x][tt.y] = 1;
      qu.push(tt);
    }
    tt.x = 1 - t.x;
    tt.y = t.y + k;
    if (tt.y >= n) return 1;
    if (str[tt.x][tt.y] == 'X' || vis[tt.x][tt.y]) continue;
    if (tt.y < tt.step) continue;
    vis[tt.x][tt.y] = 1;
    qu.push(tt);
  }
  return 0;
}
int main() {
  int n;
  scanf("%d%d", &n, &k);
  scanf("%s%s", str[0], str[1]);
  if (bfs(0, 0, n))
    printf("YES\n");
  else
    printf("NO\n");
}
