#include <bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair <int , int>
#define getchar() (xS == xTT && (xTT = (xS = xB) + fread(xB , 1 , 1 << 23 , stdin) ,xS == xTT) ? 0 : *xS++)
#define putchar(x) (p3 - obuf < 1000000) ? (*p3++ = x) : (fwrite(obuf , p3 - obuf , 1 , stdout) , p3 = obuf , *p3++ = x)
char xch,xB[1<<23],*xS=xB,*xTT=xB,obuf[1000000],*p3=obuf;
inline int read(){
char op = getchar();
int x = 0, f = 1;
while(op < '0' || op > '9'){
f = (op == '-' ? -1 : 1);
op = getchar();
}
while (op >= '0' && op <= '9') {
x = (x << 1) + (x << 3) + (op ^ 48);
op = getchar();
}
return x * f;
}
static char cc[20];
template <class T>
inline void pt(T x){
int len = 0;
if(!x) return putchar('0') , void();
if(x < 0){
x = -x;
putchar('-');
}
while(x){
cc[len++] = x % 10 + '0';
x /= 10;
}
while(len--) putchar(cc[len]);
}
inline void yes(){
putchar('Y');
putchar('e');
putchar('s');
putchar('\n');
}
inline void no(){putchar('N');putchar('o');putchar('\n');}
inline void solve(){
int n;
string a,b;
cin>>n>>a>>b;
string ssh;
for(int i=1; i<=n; i++) ssh += '0';
if((a==ssh)^(b==ssh)){
cout<<"-1\n";
return ;
}
else if(a==ssh||a==b){
cout<<"0\n";
return ;
}
int id1,id2;
for(int i=0;i<n;i++){
if(a[i]=='1'){
id1=i;
break;
}
}
for(int i=0;i<n;i++){
if(b[i]=='1'){
id2=i;
break;
}
}
vector <int> ans;
auto wk=[&](){
for(int i=id1+1;i<n;i++){
if((a[i]-'0')^(b[i]-'0')){
ans.push_back(id1-i);
for(int j=i;j<n;j++){
int f1=a[j]-'0',f2=a[j-i+id1]-'0';
f1^=f2;
a[j]=f1+'0';
}
}
}
};
if(id1==id2){
wk();
}
else if(id1>id2){
ans.push_back(id1-id2);
for(int j=id2,k=1;k<=id1+1;j++,k++){
int f1=a[j]-'0',f2=a[j-id2+id1]-'0';
f1^=f2;
a[j]=f1+'0';
}
id1=id2;
wk();
}
else{
wk();
int id3;
for(int i=n-1;i>=0;i--){
if(a[i]=='1'){
id3=i;
break;
}
}
ans.push_back(id3-id1);
}
cout<<ans.size()<<'\n';
for(auto v:ans)cout<<v<<' ';
cout<<'\n';
}
signed main(){
int T;
cin>>T;
while(T--)solve();
fwrite(obuf , p3 - obuf , 1 , stdout);
}