For problem statement at 1000-1999/1600-1699/1680-1689/1680/problemE.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1680-1689/1680/verifierE.go ends with All 100 tests passed
seed: 1773468005657530487 can you fix the verifier? #include <bits/stdc++.h>
#define endl "\n"
#define cy {puts("YES"); return;}
#define cn {puts("NO"); return;}
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair<int, int> PII;
typedef tuple<int, int, int, int> St;
typedef long long ll;
const int N = 2e5 + 10;
int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};
void solve() {
int n; cin >> n;
string s0, s1; cin >> s0 >> s1;
s0 = ' ' + s0;
s1 = ' ' + s1;
int l = -1, r = -1;
for (int i = 1; i <= n; i ++ ) {
if (s0[i] == '*' || s1[i] == '*') {
l = i;
break;
}
}
for (int i = n; i >= 1; i -- ) {
if (s0[i] == '*' || s1[i] == '*') {
r = i;
break;
}
}
vector<array<int, 2>> dp(n + 1);
if (s0[l] == s1[l]) {
dp[l][0] = dp[l][1] = 1;
} else if (s0[l] == '*') {
dp[l][0] = 0;
dp[l][1] = 1;
} else {
dp[l][0] = 1;
dp[l][1] = 0;
}
for (int i = l + 1; i <= r; i ++ ) {
if (s0[i] == '.' && s1[i] == '.') {
dp[i][0] = min(dp[i - 1][0] + 1, dp[i - 1][1] + 2);
dp[i][1] = min(dp[i - 1][1] + 1, dp[i - 1][0] + 2);
} else if (s0[i] == '*' && s1[i] == '*') {
dp[i][0] = min(dp[i - 1][0] + 2, dp[i - 1][1] + 2);
dp[i][1] = min(dp[i - 1][1] + 2, dp[i - 1][0] + 2);
} else if (s0[i] == '*') {
dp[i][0] = min(dp[i - 1][0] + 1, dp[i - 1][1] + 2);
dp[i][1] = min(dp[i - 1][1] + 2, dp[i - 1][0] + 2);
} else if (s1[i] == '*') {
dp[i][1] = min(dp[i - 1][1] + 1, dp[i - 1][0] + 2);
dp[i][0] = min(dp[i - 1][0] + 2, dp[i - 1][1] + 2);
}
}
cout << min(dp[r][0], dp[r][1]) << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T = 1;
cin >> T;
while (T -- ) {
solve();
}
return 0;
}