#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e6;
char a[MAX], b[MAX];
int v[2][MAX];
int n, m;
int dfs(int tag, int k, int h) {
  if (k <= h || k <= 0) return 0;
  if (k > n) return 1;
  if (tag == 0 && a[k] == 'X') return 0;
  if (tag == 1 && b[k] == 'X') return 0;
  if (v[tag][k]) return 0;
  v[tag][k] = 1;
  if (dfs(tag ^ 1, k + m, h + 1)) return 1;
  if (dfs(tag, k + 1, h + 1)) return 1;
  if (dfs(tag, k - 1, h + 1)) return 1;
  return 0;
}
int main() {
  cin >> n >> m;
  scanf("%s%s", a + 1, b + 1);
  memset(v, 0, sizeof v);
  puts(dfs(0, 1, 0) ? "YES" : "NO");
  return 0;
}
