总结
知道有关联的字符,然后一个集合置为一个字符的关系,就可以了
const int N=1e5+5;
int fat[N];
int find(int x)
{
return fat[x]==x?x:fat[x]=find(fat[x]);
}
signed main()
{
IOS;
//file();
int n;
string s1,s2;
cin>>n>>s1>>s2;
for(int i=0;i<26;i++)
fat[i]=i;
vector<pair<char,char> >ans;
for(int i=0;i<n;i++)
{
int x=find(s1[i]-'a');
int y=find(s2[i]-'a');
if(x!=y)
fat[x]=y;
}
for(int i=0;i<26;i++)
{
int x=find(i);
if(x!=i)
ans.pb({'a'+i,'a'+x});
}
int len=ans.size();
cout<<len<<endl;
for(int i=0;i<len;i++)
cout<<ans[i].F<<" "<<ans[i].S<<endl;
return 0;
}