fork download
  1. // Author - Sumit
  2.  
  3. #include <bits/stdc++.h>
  4. #include <ext/pb_ds/assoc_container.hpp>
  5. #include <ext/pb_ds/tree_policy.hpp>
  6. using namespace __gnu_pbds;
  7. using namespace std;
  8.  
  9. #pragma GCC optimize("O3")
  10. #pragma GCC target("avx")
  11.  
  12. #define ll long long
  13. #define int ll
  14. #define ps push
  15. #define pb emplace_back
  16. #define INF 1LL<<60
  17. #define MOD 1e9+7
  18. #define mp make_pair
  19. #define rep(i,a,b) for (int i = a; i < b; i++)
  20. #define repd(i,a,b) for (int i = a; i >= b; i--)
  21. #define all(v) v.begin(),v.end()
  22. #define pii pair<int,int>
  23. #define F first
  24. #define S second
  25. #define mii map<int,int>
  26. #define vi vector<int>
  27. #define vvi vector<vi>
  28. #define vpii vector<pair<int,int>>
  29. #define itr :: iterator it
  30. #define WL(t) while(t --)
  31. #define gcd(a,b) __gcd((a),(b))
  32. #define lcm(a,b) ((a)*(b))/gcd((a),(b))
  33. #define lower(v,x) (lower_bound(all(v),x)-v.begin())
  34. #define upper(v,x) (upper_bound(all(v),x)-v.begin())
  35. #define debug(x) cout << x << "\n";
  36. #define debug2(x,y) cout << x << " " << y << "\n";
  37. #define debug3(x,y,z) cout << x << " " << y << " " << z << endl;
  38.  
  39.  
  40.  
  41. void solve(){
  42. int n;
  43. cin>>n;
  44. int cnt1[26];
  45. int cnt2[26];
  46. string a,b;
  47. cin>>a>>b;
  48. vector<int> arr1[26];
  49. vector<int> arr2[26];
  50. vector<int> req[26];
  51. set<char> st;
  52. rep(i,0,n){
  53. cnt1[a[i]-'a']++;
  54. cnt2[b[i]-'a']++;
  55. arr1[a[i]-'a'].pb(i);
  56. arr2[b[i]-'a'].pb(i);
  57. st.insert(a[i]);
  58. }
  59. bool flag = true;
  60. int cnt=0;
  61. rep(i,0,n){
  62. if(st.find(b[i])==st.end()){
  63. // Debug(b[i]);
  64. debug(-1);
  65. return;
  66. }
  67. }
  68. vi ans;
  69. rep(i,0,n){
  70. if(a[i]!=b[i]){
  71. req[b[i]-'a'].pb(i);
  72. cnt++;
  73. }
  74. }
  75. cout<<cnt<<"\n";
  76. set<int> s;
  77. repd(i,25,0){
  78. if(req[i].size()!=0){
  79. // cout<<(i+'a')<<" ";
  80. int sz = req[i].size() + arr1[i].size();
  81. cout<<sz<<" ";
  82. for(auto x:req[i]){
  83. cout<<x<<" ";
  84. }
  85. for(auto x:arr1[i]){
  86. cout<<x<<" ";
  87. }
  88. cout<<endl;
  89. }
  90. }
  91.  
  92.  
  93. }
  94.  
  95.  
  96. signed main(){
  97. ios_base::sync_with_stdio(false);
  98. cin.tie(NULL);
  99. cout.tie(NULL);
  100.  
  101. #ifndef ONLINE_JUDGE
  102. freopen("input.txt","r",stdin);
  103. freopen("output.txt","w",stdout);
  104. freopen("error.txt","w",stderr);
  105. #endif
  106.  
  107. int t=1;
  108. cin>>t;
  109. WL(t){
  110. solve();
  111. }
  112.  
  113. cerr << "Time elapsed: " << clock() / 1000 << " ms" << endl;
  114. }
Success #stdin #stdout #stderr 0s 4544KB
stdin
3
5
abcab
aabab
3
aaa
aab
2
de
cd
stdout
2
3 2 1 4 
3 1 0 3 
-1
-1
stderr
Time elapsed: 3 ms