#include <bits/stdc++.h>
using namespace std;
int n, k, m, j;
bool ok[2][100000];
char car;
bool chercheur(vector<vector<int> > precedent, int tprec) {
  vector<vector<int> > suivant;
  vector<int> element;
  int i, j, t = tprec + 1;
  int mur, autre;
  for (j = 0; j < precedent.size(); j++) {
    mur = precedent[j][0];
    i = precedent[j][1];
    autre = (mur + 1) % 2;
    if (i > 0 && ok[mur][i - 1] && t <= i - 1) {
      element.clear();
      element.push_back(mur);
      element.push_back(i - 1);
      ok[element[0]][element[1]] = false;
      suivant.push_back(element);
    }
    if (i < n - 1 && ok[mur][i + 1] && t <= i + 1) {
      element.clear();
      element.push_back(mur);
      element.push_back(i + 1);
      ok[element[0]][element[1]] = false;
      suivant.push_back(element);
    } else if (i == n - 1)
      return true;
    if (i < n - k && ok[autre][i + k] && t <= i + k) {
      element.clear();
      element.push_back(autre);
      element.push_back(i + k);
      ok[element[0]][element[1]] = false;
      suivant.push_back(element);
    } else if (i >= n - k)
      return true;
  }
  if (suivant.size() == 0) return false;
  if (chercheur(suivant, t)) return true;
  return false;
}
int main() {
  int i;
  vector<vector<int> > initial;
  vector<int> element;
  scanf("%d %d\n", &n, &k);
  for (i = 0; i < n; i++) {
    scanf("%c", &car);
    if (car == '-')
      ok[0][i] = true;
    else
      ok[0][i] = false;
  }
  scanf("\n");
  for (i = 0; i < n; i++) {
    scanf("%c", &car);
    if (car == '-')
      ok[1][i] = true;
    else
      ok[1][i] = false;
  }
  element.push_back(0);
  element.push_back(0);
  initial.push_back(element);
  if (chercheur(initial, 0))
    printf("YES");
  else
    printf("NO");
  return 0;
}
