#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
bool closeStrings( string word1, string word2) {
int i;
int f1[ 26 ] = { } ;
int f2[ 26 ] = { } ;
for ( i= ( 0 ) ; i< ( word1.size ( ) ) ; i++ ) {
f1[ word1[ i] - 'a' ] ++ ;
}
for ( i= ( 0 ) ; i< ( word2.size ( ) ) ; i++ ) {
f2[ word2[ i] - 'a' ] ++ ;
}
for ( i= ( 0 ) ; i< ( 26 ) ; i++ ) {
if ( f1[ i] && ! f2[ i] ) {
return false ;
}
}
for ( i= ( 0 ) ; i< ( 26 ) ; i++ ) {
if ( ! f1[ i] && f2[ i] ) {
return false ;
}
}
sort( f1,f1+ 26 ) ;
sort( f2,f2+ 26 ) ;
for ( i= ( 0 ) ; i< ( 26 ) ; i++ ) {
if ( f1[ i] ! = f2[ i] ) {
return false ;
}
}
return true ;
}
}
;
// cLay varsion 20201115-2
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// bool closeStrings(string word1, string word2) {
// int f1[26] = {}, f2[26] = {};
// rep(i,word1.size()) f1[word1[i]-'a']++;
// rep(i,word2.size()) f2[word2[i]-'a']++;
// rep(i,26) if(f1[i] && !f2[i]) return false;
// rep(i,26) if(!f1[i] && f2[i]) return false;
// sort(f1,f1+26);
// sort(f2,f2+26);
// rep(i,26) if(f1[i] != f2[i]) return false;
// return true;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIGJvb2wgY2xvc2VTdHJpbmdzKHN0cmluZyB3b3JkMSwgc3RyaW5nIHdvcmQyKXsKICAgIGludCBpOwogICAgaW50IGYxWzI2XSA9IHt9OwogICAgaW50IGYyWzI2XSA9IHt9OwogICAgZm9yKGk9KDApO2k8KHdvcmQxLnNpemUoKSk7aSsrKXsKICAgICAgZjFbd29yZDFbaV0tJ2EnXSsrOwogICAgfQogICAgZm9yKGk9KDApO2k8KHdvcmQyLnNpemUoKSk7aSsrKXsKICAgICAgZjJbd29yZDJbaV0tJ2EnXSsrOwogICAgfQogICAgZm9yKGk9KDApO2k8KDI2KTtpKyspewogICAgICBpZihmMVtpXSAmJiAhZjJbaV0pewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogICAgZm9yKGk9KDApO2k8KDI2KTtpKyspewogICAgICBpZighZjFbaV0gJiYgZjJbaV0pewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogICAgc29ydChmMSxmMSsyNik7CiAgICBzb3J0KGYyLGYyKzI2KTsKICAgIGZvcihpPSgwKTtpPCgyNik7aSsrKXsKICAgICAgaWYoZjFbaV0gIT0gZjJbaV0pewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMjAxMTE1LTIKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgYm9vbCBjbG9zZVN0cmluZ3Moc3RyaW5nIHdvcmQxLCBzdHJpbmcgd29yZDIpIHsKLy8gICAgIGludCBmMVsyNl0gPSB7fSwgZjJbMjZdID0ge307Ci8vICAgICByZXAoaSx3b3JkMS5zaXplKCkpIGYxW3dvcmQxW2ldLSdhJ10rKzsKLy8gICAgIHJlcChpLHdvcmQyLnNpemUoKSkgZjJbd29yZDJbaV0tJ2EnXSsrOwovLyAgICAgcmVwKGksMjYpIGlmKGYxW2ldICYmICFmMltpXSkgcmV0dXJuIGZhbHNlOwovLyAgICAgcmVwKGksMjYpIGlmKCFmMVtpXSAmJiBmMltpXSkgcmV0dXJuIGZhbHNlOwovLyAgICAgc29ydChmMSxmMSsyNik7Ci8vICAgICBzb3J0KGYyLGYyKzI2KTsKLy8gICAgIHJlcChpLDI2KSBpZihmMVtpXSAhPSBmMltpXSkgcmV0dXJuIGZhbHNlOwovLyAgICAgcmV0dXJuIHRydWU7Ci8vICAgfQovLyB9Owo=