#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 1;
int n, k;
char g[2][N];
bool vis[2][N];
queue<pair<int, int> > qu;
bool BFS(int x, int y) {
  qu.push(make_pair(x, y));
  vis[x][y] = true;
  int lev = 0;
  while (!qu.empty()) {
    int siz = qu.size();
    while (siz--) {
      int x = qu.front().first, y = qu.front().second;
      qu.pop();
      if (y + k >= n || y + 1 >= n) return true;
      if (y - 1 >= 0 && y - 1 > lev && g[x][y - 1] != 'X' && !vis[x][y - 1]) {
        vis[x][y - 1] = true;
        qu.push(make_pair(x, y - 1));
      }
      if (g[x][y + 1] != 'X' && !vis[x][y + 1]) {
        vis[x][y + 1] = true;
        qu.push(make_pair(x, y + 1));
      }
      if (g[x ^ 1][y + k] != 'X' && !vis[x ^ 1][y + k]) {
        vis[x ^ 1][y + k] = true;
        qu.push(make_pair(x ^ 1, y + k));
      }
    }
    ++lev;
  }
  return false;
}
int main() {
  scanf("%d%d%s%s", &n, &k, g[0], g[1]);
  if (BFS(0, 0))
    puts("YES");
  else
    puts("NO");
  return 0;
}
