#include <bits/stdc++.h>
using namespace std;
bool a[100100], b[100100], z[100100][2];
int n, k;
void dfs(int q, int w, int level) {
  z[q][w] = true;
  if (q + k > n) {
    cout << "YES";
    exit(0);
  }
  if (w == 0) {
    if (b[q + k] && !z[q + k][w xor 1]) dfs(q + k, w xor 1, level + 1);
    if (a[q + 1] && !z[q + 1][w]) dfs(q + 1, w, level + 1);
    if (a[q - 1] && !z[q - 1][w] && level < q - 2) dfs(q - 1, w, level + 1);
  } else if (w == 1) {
    if (a[q + k] && !z[q + k][w xor 1]) dfs(q + k, w xor 1, level + 1);
    if (b[q + 1] && !z[q + 1][w]) dfs(q + 1, w, level + 1);
    if (b[q - 1] && !z[q - 1][w] && level < q - 2) dfs(q - 1, w, level + 1);
  }
}
int main() {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    char c;
    cin >> c;
    if (c == '-')
      a[i] = true;
    else
      a[i] = false;
  }
  for (int i = 1; i <= n; i++) {
    char c;
    cin >> c;
    if (c == '-')
      b[i] = true;
    else
      b[i] = false;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= 1; j++) z[i][j] = false;
  dfs(1, 0, 0);
  cout << "NO";
}
