#include <bits/stdc++.h>
using namespace std;
bool vl[100010], vr[100010];
int main() {
  int n, k;
  cin >> n >> k;
  queue<pair<pair<int, int>, bool> > q;
  string s1, s2;
  cin >> s1 >> s2;
  q.push(make_pair(make_pair(0, 0), true));
  vl[0] = true;
  while (!q.empty()) {
    pair<pair<int, int>, bool> p = q.front();
    q.pop();
    if (p.second) {
      if (p.first.first + k >= n) {
        cout << "YES" << endl;
        return 0;
      }
      if (s1[p.first.first + 1] == '-' && !vl[p.first.first + 1]) {
        q.push(
            make_pair(make_pair(p.first.first + 1, p.first.second + 1), true));
        vl[p.first.first + 1] = true;
      }
      if (s1[p.first.first - 1] == '-' &&
          p.first.first - 1 >= p.first.second + 1 && !vl[p.first.first - 1]) {
        q.push(
            make_pair(make_pair(p.first.first - 1, p.first.second + 1), true));
        vl[p.first.first - 1] = true;
      }
      if (s2[p.first.first + k] == '-' && !vr[p.first.first + k]) {
        q.push(
            make_pair(make_pair(p.first.first + k, p.first.second + 1), false));
        vr[p.first.first + k] = true;
      }
    } else {
      if (p.first.first + k >= n) {
        cout << "YES" << endl;
        return 0;
      }
      if (s2[p.first.first + 1] == '-' && !vr[p.first.first + 1]) {
        q.push(
            make_pair(make_pair(p.first.first + 1, p.first.second + 1), false));
        vr[p.first.first + 1] = true;
      }
      if (s2[p.first.first - 1] == '-' &&
          p.first.first - 1 >= p.first.second + 1 && !vr[p.first.first - 1]) {
        q.push(
            make_pair(make_pair(p.first.first - 1, p.first.second + 1), false));
        vr[p.first.first - 1] = true;
      }
      if (s1[p.first.first + k] == '-' && !vl[p.first.first + k]) {
        q.push(
            make_pair(make_pair(p.first.first + k, p.first.second + 1), true));
        vl[p.first.first + k] = true;
      }
    }
  }
  cout << "NO" << endl;
}
