#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, k;
vector<string> mat(2);
ll dist[2][100001];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
std::cin >> n >> k >> mat[0] >> mat[1];
memset(dist, 1, sizeof dist);
dist[0][0] = 0;
queue<pair<ll, ll>> q;
q.push({0, 0});
while(!q.empty()) {
ll w = q.front().first;
ll x = q.front().second;
q.pop();
if(dist[w][x] > x || mat[w][x] == 'X') {
continue;
}
if(x + k >= n) {
cout << "YES\n";
return 0;
}
for(int d = -1; d <= 1; d++) {
if(x + d >= 0 && 1 + dist[w][x] < dist[w][x+d]){ // subo ou desco
dist[w][x+d] = 1 + dist[w][x];
q.push({w, x+d});
}
}
if(dist[!w][x+k] > 1 + dist[w][x]){ // pulo (x^1 igual a passar de 0 para 1)
dist[!w][x+k] = 1 + dist[w][x];
q.push({!w, x+k});
}
}
cout << "NO\n";
}
Two Strings | Anagrams |
Prime Number | Lexical Sorting Reloaded |
1514A - Perfectly Imperfect Array | 580A- Kefa and First Steps |
1472B- Fair Division | 996A - Hit the Lottery |
MSNSADM1 Football | MATCHES Playing with Matches |
HRDSEQ Hard Sequence | DRCHEF Doctor Chef |
559. Maximum Depth of N-ary Tree | 821. Shortest Distance to a Character |
1441. Build an Array With Stack Operations | 1356. Sort Integers by The Number of 1 Bits |
922. Sort Array By Parity II | 344. Reverse String |
1047. Remove All Adjacent Duplicates In String | 977. Squares of a Sorted Array |
852. Peak Index in a Mountain Array | 461. Hamming Distance |
1748. Sum of Unique Elements | 897. Increasing Order Search Tree |
905. Sort Array By Parity | 1351. Count Negative Numbers in a Sorted Matrix |
617. Merge Two Binary Trees | 1450. Number of Students Doing Homework at a Given Time |
700. Search in a Binary Search Tree | 590. N-ary Tree Postorder Traversal |