#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int n, k;
bool vis[2][maxn];
char wall[2][maxn];
bool dfs(int d, int p, int lev) {
  if (p >= n) return true;
  int j = p + k, i = d ^ 1;
  if (j >= n || (!vis[i][j] && wall[i][j] == '-' && lev + 1 < j)) {
    if (j < n) vis[i][j] = true;
    if (dfs(i, j, lev + 1)) return true;
  }
  j = p + 1;
  if (j >= n || (!vis[d][j] && wall[d][j] == '-' && lev + 1 < j)) {
    if (j < n) vis[d][j] = true;
    if (dfs(d, j, lev + 1)) return true;
  }
  j = p - 1;
  if (j >= n || (!vis[d][j] && wall[d][j] == '-' && lev + 1 < j)) {
    if (j < n) vis[d][j] = true;
    if (dfs(d, j, lev + 1)) return true;
  }
  return false;
}
int main() {
  scanf("%d %d", &n, &k);
  scanf("%s %s", wall[0], wall[1]);
  memset(vis, false, sizeof(vis));
  vis[0][0] = true;
  if (dfs(0, 0, -1)) {
    printf("YES\n");
  } else
    printf("NO\n");
  return 0;
}
