include <bits/stdc++.h>
using namespace std;
define in long long
void precompute(vector&prefix,vector&suffix,vector<vector>&data,int n){
// cout<<“… data …”<<endl;
// for(int i = 0 ; i<2 ; i++){
// for(int j = 0 ; j<n; j++){
// cout<<data[i][j]<<" ";
// }
// cout<<endl;
// }
// cout<<"..."<<endl;
vector<in>arr1;
for(int i = 0 ; i<n ; i++){
if(data[0][i] == 1){
arr1.push_back(i);
}
}
//cout<<"arr1 is "<<endl;
//for(auto it : arr1) cout<<it<<" " ;
int ptr1 = 0;
int size1 = arr1.size();
for(int i = 0 ; i<n && ptr1 <arr1.size(); i++){
prefix[i] = ((i > 0 ? prefix[i-1] : 0) + arr1[ptr1] - i);
ptr1++;
}
vector<int>arr2;
//cout<<endl<<"arr2 "<<endl;
for(int i = n-1 ; i>= 0 ; i--){
if(data[1][i] == 1){
arr2.push_back(i);
//cout<<i<<" ";
}
}
int ptr2 = 0;
int size2 = arr2.size();
for(int i = n-1 ; i>= 0 && ptr2 < size2 ; i--){
suffix[i] = ((i+1 < n ? suffix[i+1] : 0) +i- arr2[ptr2] );
ptr2++;
}
// cout<<endl<<"prefix is"<<endl;
// for(int i = 0 ; i<n ; i++){
// cout<<prefix[i]<<" ";
// }
// cout<<endl<<"suffix is"<<endl;
// for(int i = 0 ; i<n ; i++){
// cout<<suffix[n-i-1]<<" ";
// }
}
int main() {
// your code goes here
int t;
cin>>t;
while(t–){
int n,q;
cin>>n>>q;
vector<vector>data(2,vector(n,0));
for (int row = 0; row < 2; row++) {
string s;
cin >> s;
for (int i = 0; i < n; i++) {
data[row][i] = s[i] - ‘0’; // convert char to int
}
}
vector<in>prefix(n,-1);
vector<in>suffix(n,-1);
precompute(prefix,suffix,data,n);
in ans = INT_MAX;
for(int i = 0 ; i<n ; i++){
if(prefix[i] != -1 && suffix[i] != -1 ) ans = min(ans , prefix[i] + suffix[i]);
}
ans = (ans == INT_MAX ? -1 : ans);
cout<<ans<<endl;
}
}