Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /****Bismillahir*Rahmanir*Rahim*******
- * Riz1 Ahmed, CSE, LU. *
- * fb.com/riz1ahmed *
- * Code Start Time: 2020-05-30-20.52 *
- *************************************/
- #include<bits/stdc++.h>
- #define ll long long int
- #define Fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
- #define PrintV(v) for(auto i:v)cout<<i<<" ";puts("");
- #define FOR(i,l,r) for(ll i=l;i<=r;i++)
- using namespace std;
- const ll Mod=1e9+7,MX=1e7,MN=LLONG_MIN;
- void Print(ll a,ll b=MN,ll c=MN,ll d=MN) {
- printf("%lld",a);
- if (b!=MN) printf(" %lld",b);
- if (c!=MN) printf(" %lld",c);
- if (d!=MN) printf(" %lld",d);
- puts("");
- }
- int main(){
- ll n;
- char a[1005],b[1005];
- scanf("%*d");
- while(~scanf("%lld %s %s",&n,a,b)){
- ll pos[123], f=1 ,i;
- for (i=0;i<n && f;i++) if (a[i]<b[i]) f=0;
- for (i='a';i<='z' && f;i++) pos[i]=-1;
- for (i=0;i<n && f;i++) pos[a[i]]=i;
- vector< vector<ll> > v;
- vector<ll> let[123];
- for (i=0;i<n && f;i++)
- if (a[i]!=b[i]) let[b[i]].push_back(i);
- ///Comment it
- // for (i='a';i<='z' && f;i++)
- // if (let[i].size()){
- // printf("%c=",i);
- // for (auto it:let[i]) printf("%lld ",it);puts("");
- // }puts("");
- for (i='z';i>='a' && f;i--){
- if (let[i].size()){
- if (pos[i]==-1) {f=0;break;}
- ll x=pos[i];
- v.push_back(let[i]);
- for (auto it:let[i])
- if (it==x){ x=-1; break;}
- if (x!=-1) v[v.size()-1].push_back(x);
- // for (auto it:let[i]) a[it]=i;
- // puts(a);
- }
- }
- if (!f) puts("-1");
- else{
- // printf("Ans is\n");
- printf("%d\n",v.size());
- for (i=0;i<v.size();i++){
- printf("%d ",v[i].size());
- for (auto it:v[i]) printf("%lld ",it);
- puts("");
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement