Can someone please tell what is wrong in my logic/code…It is givinng WA on testcase 4
#include<bits/stdc++.h>
define ll long long int
define itn int
define xin cin
define pb push_back
define vi vector
define vvi vector<vector>
define vl vector
define vvl vector<vector>
define vp vector<pair<ll,ll>>
using namespace std;
const ll mod= 998244353;
const ll MOD=1e9+7;
const ll INF=1e18;
/**
vectorfact(1e6+7);
vectorifact(1e6+7);
vector isPrime(1e6+1,true);
vectorspf(1e6+1);
void precompute_prime(){ isPrime[0]=false; isPrime[1]=false; for(ll i=2;i<=1e5;i++) { if(isPrime[i]) { prime.pb(i);for(ll j=ii;j<=1e5;j+=i){ isPrime[j]=false; } } }}
vector primefactorisation(ll n){ vectorv; for(ll i=2;ii<=n;i++){ while(n%i==0){ v.push_back(i);n/=i; }} if(n>1) v.push_back(n); return v;}
void precompute_spf(){ for ( ll i=1;i<=1e6;i++) spf[i]=i;for(ll i=2;i<=1e6;i++){ if(spf[i]==i){ for(ll j=ii;j<=1e6;j+=i){ if(spf[j]==j)spf[j]=i;} }}}
ll pow(ll a,ll b, ll c){ ll res=1; while(b>0) { if(b&1) { res=((res%c)(a%c))%c;} a=((a)*(a))%c; b/=2;}return res%c;}
void precompute(){fact[0]=1;ifact[0]=1;for(int i=1;i<=1e6;i++){fact[i]=(fact[i-1]*i)%MOD; ifact[i]=pow(fact[i],MOD-2,MOD);}}
ll nCr(int n , int r){ if(n<r ) return 0ll; return (fact[n]*pow((fact[r]*fact[n-r])%MOD,MOD-2,MOD))%MOD;}
bool cmp(pair<ll,ll>&a,pair<ll,ll>&b){ if(a.first!=b.first) return a.first<b.first;else return a.second>b.second;}
*/
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll t=1;
cin>>t;
while(t–)
{
ll n; ll q;
cin>>n;cin>>q;
char a[2][n];
for(ll i=0;i<2;i++)
{
for(ll j=0;j<n;j++)
cin>>a[i][j];
} stack<ll>st1,st2;
vvl ops(2,vl(n+2,1e9));ll j=0;ll c=0;
for(ll i=n-1;i>=0;i--)
{
if(a[0][i]=='1')
st1.push(i+1);
}
j=n-1;ll ans=1e9;//cout<<st1.size()<<" ";
for(ll i=0;i<n;i++)
{
if(a[1][i]=='1')
st2.push(i+1);
}
if(st1.size() + st2.size() <=n)
{
cout<<-1<<endl; continue;
}
ll i=0;//cout<<st1.size();
ll r1=0;
while(!st1.empty())
{
ll d1=(i+1)-st1.top()+r1;
if(d1>=1e7)
{ st1.pop(); i++;
ops[0][i]=1e9; continue;
}
ops[0][i]=st1.top()-(i+1)+r1;
r1=ops[0][i]; i++;
st1.pop();
}
i=n-1;r1=0;
while(!st2.empty())
{
ll d1=(i+1)-st2.top()+r1;
if(d1>=1e7)
{ i--; st2.pop();
ops[1][i]=1e9; continue;
}
ops[1][i]=(i+1)-st2.top() +r1 ;
r1=ops[1][i];
st2.pop(); i--;
}
for(ll i=0;i<n;i++)
{
ans=min(ans,ops[0][i]+ops[1][i]);
}
if(ans>=1e9)
{
cout<<-1<<endl;
}
else cout<<ans<<endl;
}
}