hack.in:
1
aquaqaqsky
ssssssskya
正确输出:
6
以下代码输出 7:
#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
char mp[128];
bool f[128];
bool v[128];
int now;
int ccnt;
void dfs(int x){
if(x==0)return;
if(v[x]){
if(x==now)ccnt++;
return;
}
v[x]=1;
dfs(mp[x]);
}
int mian(){
string s,t;cin>>s>>t;
memset(f,0,sizeof f);
memset(v,0,sizeof v);
memset(mp,0,sizeof mp);
int n=s.length();s=' '+s;t=' '+t;
for(int i=1;i<=n;i++){
if(mp[s[i]]&&mp[s[i]]!=t[i]){
cout<<-1<<endl;
return 0;
}
mp[s[i]]=t[i];
f[t[i]]=1;
}
int cnt=0;
for(int i='A';i<='z';i++)cnt+=f[i];
if(cnt==52&&s!=t)return cout<<-1<<endl,0;
int ecnt=0;ccnt=0;
vector<int>in[128];
for(int i='A';i<='z';i++){
if(mp[i]==i)mp[i]=0;
ecnt+=(bool)(mp[i]);
in[mp[i]].push_back(i);
}
for(int i='A';i<='z';i++){
if(in[i].size()==2){
if(!v[i])dfs(i);
}
}
for(int i='A';i<='z';i++){
if(!v[i])now=i,dfs(i);
}
cout<<ccnt+ecnt<<endl;
return 0;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);
int t;cin>>t;while(t--)mian();
return 0;
}