f=->x,y{g=->z{z.chars.map{|c|z=~/#{c}/}};g[x]==g[y]}
tests = [
["AAL","EEL",true],
["ESTATE","DUELED",true],
["DUELED","ESTATE",true],
["XXX","YYY",true],
["CBAABC","DEFFED",true],
["RAMBUNCTIOUSLY","THERMODYNAMICS",true],
["DISCRIMINATIVE","SIMPLIFICATION",true],
["AAL","ALL",false],
["AALl","AAL",false],
["SEE",",SAW",false],
["ANTS","PANTS",false],
["BANANA",",SERENE",false],
["BANANA",",SENSES",false],
["AB","CC",false],
["XXY","XYY",false],
["ABCBACCBA","ABCBACCAB",false],
]
puts tests.all?{|test|f[test[0],test[1]]==test[2]} ? "all passed" : "some failed"
Zj0tPngseXtnPS0+ent6LmNoYXJzLm1hcHt8Y3x6PX4vI3tjfS99fTtnW3hdPT1nW3ldfQoKCnRlc3RzID0gWwoKWyJBQUwiLCJFRUwiLHRydWVdLApbIkVTVEFURSIsIkRVRUxFRCIsdHJ1ZV0sClsiRFVFTEVEIiwiRVNUQVRFIix0cnVlXSwKWyJYWFgiLCJZWVkiLHRydWVdLApbIkNCQUFCQyIsIkRFRkZFRCIsdHJ1ZV0sClsiUkFNQlVOQ1RJT1VTTFkiLCJUSEVSTU9EWU5BTUlDUyIsdHJ1ZV0sClsiRElTQ1JJTUlOQVRJVkUiLCJTSU1QTElGSUNBVElPTiIsdHJ1ZV0sCgpbIkFBTCIsIkFMTCIsZmFsc2VdLApbIkFBTGwiLCJBQUwiLGZhbHNlXSwKWyJTRUUiLCIsU0FXIixmYWxzZV0sClsiQU5UUyIsIlBBTlRTIixmYWxzZV0sClsiQkFOQU5BIiwiLFNFUkVORSIsZmFsc2VdLApbIkJBTkFOQSIsIixTRU5TRVMiLGZhbHNlXSwKWyJBQiIsIkNDIixmYWxzZV0sClsiWFhZIiwiWFlZIixmYWxzZV0sClsiQUJDQkFDQ0JBIiwiQUJDQkFDQ0FCIixmYWxzZV0sCgpdCgpwdXRzIHRlc3RzLmFsbD97fHRlc3R8Zlt0ZXN0WzBdLHRlc3RbMV1dPT10ZXN0WzJdfSA/ICJhbGwgcGFzc2VkIiA6ICJzb21lIGZhaWxlZCI=