#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int cnv[ 26 ] ;
int cnt[ 26 ] ;
class Solution{
public :
bool canConvert( string str1, string str2) {
int N, i, j;
N = str1.size ( ) ;
if ( str1== str2) {
return true ;
}
for ( i= 0 ; i< ( N) ; i++ ) {
str1[ i] - = 'a' ;
}
for ( i= 0 ; i< ( N) ; i++ ) {
str2[ i] - = 'a' ;
}
for ( i= 0 ; i< ( 26 ) ; i++ ) {
cnv[ i] = - 1 ;
}
for ( i= 0 ; i< ( N) ; i++ ) {
if ( cnv[ str1[ i] ] == - 1 ) {
cnv[ str1[ i] ] = str2[ i] ;
}
if ( cnv[ str1[ i] ] ! = str2[ i] ) {
return false ;
}
}
for ( i= 0 ; i< ( 26 ) ; i++ ) {
cnt[ i] = 0 ;
}
for ( i= 0 ; i< ( 26 ) ; i++ ) {
if ( cnv[ i] ! = - 1 ) {
cnt[ cnv[ i] ] = 1 ;
}
}
{
int KL2GvlyY, Lj4PdHRW;
if ( 26 == 0 ) {
KL2GvlyY = 0 ;
}
else {
KL2GvlyY = cnt[ 0 ] ;
for ( Lj4PdHRW= ( 1 ) ; Lj4PdHRW< ( 26 ) ; Lj4PdHRW++ ) {
KL2GvlyY + = cnt[ Lj4PdHRW] ;
}
}
j = KL2GvlyY;
}
if ( j== 26 ) {
return false ;
}
return true ;
}
}
;
// cLay varsion 20190817-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int cnv[26], cnt[26];
//
// class Solution {
// public:
// bool canConvert(string str1, string str2) {
// int i, j, N;
// N = str1.size();
//
// if(str1==str2) return true;
//
// rep(i,N) str1[i] -= 'a';
// rep(i,N) str2[i] -= 'a';
//
// rep(i,26) cnv[i] = -1;
// rep(i,N){
// if(cnv[str1[i]]==-1) cnv[str1[i]] = str2[i];
// if(cnv[str1[i]] != str2[i]) return false;
// }
//
// rep(i,26) cnt[i] = 0;
// rep(i,26) if(cnv[i]!=-1) cnt[cnv[i]] = 1;
// j = sum(cnt(26));
//
// if(j==26) return false;
// return true;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IGNudlsyNl07CmludCBjbnRbMjZdOwpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgYm9vbCBjYW5Db252ZXJ0KHN0cmluZyBzdHIxLCBzdHJpbmcgc3RyMil7CiAgICBpbnQgTiwgaSwgajsKICAgIE4gPSBzdHIxLnNpemUoKTsKICAgIGlmKHN0cjE9PXN0cjIpewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGZvcihpPTA7aTwoTik7aSsrKXsKICAgICAgc3RyMVtpXSAtPSAnYSc7CiAgICB9CiAgICBmb3IoaT0wO2k8KE4pO2krKyl7CiAgICAgIHN0cjJbaV0gLT0gJ2EnOwogICAgfQogICAgZm9yKGk9MDtpPCgyNik7aSsrKXsKICAgICAgY252W2ldID0gLTE7CiAgICB9CiAgICBmb3IoaT0wO2k8KE4pO2krKyl7CiAgICAgIGlmKGNudltzdHIxW2ldXT09LTEpewogICAgICAgIGNudltzdHIxW2ldXSA9IHN0cjJbaV07CiAgICAgIH0KICAgICAgaWYoY252W3N0cjFbaV1dICE9IHN0cjJbaV0pewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogICAgZm9yKGk9MDtpPCgyNik7aSsrKXsKICAgICAgY250W2ldID0gMDsKICAgIH0KICAgIGZvcihpPTA7aTwoMjYpO2krKyl7CiAgICAgIGlmKGNudltpXSE9LTEpewogICAgICAgIGNudFtjbnZbaV1dID0gMTsKICAgICAgfQogICAgfQogICAgewogICAgICBpbnQgS0wyR3ZseVksIExqNFBkSFJXOwogICAgICBpZigyNj09MCl7CiAgICAgICAgS0wyR3ZseVkgPSAwOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgS0wyR3ZseVkgPSBjbnRbMF07CiAgICAgICAgZm9yKExqNFBkSFJXPSgxKTtMajRQZEhSVzwoMjYpO0xqNFBkSFJXKyspewogICAgICAgICAgS0wyR3ZseVkgKz0gY250W0xqNFBkSFJXXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaiA9S0wyR3ZseVk7CiAgICB9CiAgICBpZihqPT0yNil7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MDgxNy0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGludCBjbnZbMjZdLCBjbnRbMjZdOwovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgYm9vbCBjYW5Db252ZXJ0KHN0cmluZyBzdHIxLCBzdHJpbmcgc3RyMikgewovLyAgICAgaW50IGksIGosIE47Ci8vICAgICBOID0gc3RyMS5zaXplKCk7Ci8vIAovLyAgICAgaWYoc3RyMT09c3RyMikgcmV0dXJuIHRydWU7Ci8vIAovLyAgICAgcmVwKGksTikgc3RyMVtpXSAtPSAnYSc7Ci8vICAgICByZXAoaSxOKSBzdHIyW2ldIC09ICdhJzsKLy8gCi8vICAgICByZXAoaSwyNikgY252W2ldID0gLTE7Ci8vICAgICByZXAoaSxOKXsKLy8gICAgICAgaWYoY252W3N0cjFbaV1dPT0tMSkgY252W3N0cjFbaV1dID0gc3RyMltpXTsKLy8gICAgICAgaWYoY252W3N0cjFbaV1dICE9IHN0cjJbaV0pIHJldHVybiBmYWxzZTsKLy8gICAgIH0KLy8gCi8vICAgICByZXAoaSwyNikgY250W2ldID0gMDsKLy8gICAgIHJlcChpLDI2KSBpZihjbnZbaV0hPS0xKSBjbnRbY252W2ldXSA9IDE7Ci8vICAgICBqID0gc3VtKGNudCgyNikpOwovLyAKLy8gICAgIGlmKGo9PTI2KSByZXR1cm4gZmFsc2U7Ci8vICAgICByZXR1cm4gdHJ1ZTsKLy8gICB9Ci8vIH07Cg==