#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
string isOneAway(string s1, string s2) {
if (s1.length() <= 0 || s2.length() <= 0) {
return "False";
}
int len = 0, edits = 0;
if (s1.length() > s2.length())
len = s1.length() - s2.length();
else
len = s2.length() - s1.length();
if (len > 1)
return "False";
int i;
unordered_map<char, int> s1_map;
for (i =0; i < s1.length(); i++ )
s1_map[s1[i]] += 1;
for (i = 0; i < s2.length(); i++) {
s1_map[s2[i]] -= 1;
}
for(const pair <char,int> tup: s1_map) {
if (edits > 1)
return "False";
if (tup.second > 0)
edits += 1;
}
return "True";
}
int main() {
string first[] = {"pale", "pales", "pale", "pale"};
string second[] = {"ple", "pale", "bale", "bae"};
for (int i = 0; i < 4; i++)
cout << isOneAway(first[i], second[i]) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyBpc09uZUF3YXkoc3RyaW5nIHMxLCBzdHJpbmcgczIpIHsKCWlmIChzMS5sZW5ndGgoKSA8PSAwIHx8IHMyLmxlbmd0aCgpIDw9IDApIHsKCQlyZXR1cm4gIkZhbHNlIjsgCgl9CglpbnQgbGVuID0gMCwgZWRpdHMgPSAwOwoJaWYgKHMxLmxlbmd0aCgpID4gczIubGVuZ3RoKCkpCgkJbGVuID0gczEubGVuZ3RoKCkgLSBzMi5sZW5ndGgoKTsKCWVsc2UKCQlsZW4gPSBzMi5sZW5ndGgoKSAtIHMxLmxlbmd0aCgpOwoJCQoKCWlmIChsZW4gPiAxKQoJCXJldHVybiAiRmFsc2UiOwoJCglpbnQgaTsKCXVub3JkZXJlZF9tYXA8Y2hhciwgaW50PiBzMV9tYXA7Cglmb3IgKGkgPTA7IGkgPCBzMS5sZW5ndGgoKTsgaSsrICkKCQlzMV9tYXBbczFbaV1dICs9IDE7CgkJCglmb3IgKGkgPSAwOyBpIDwgczIubGVuZ3RoKCk7IGkrKykgewoJCQlzMV9tYXBbczJbaV1dIC09IDE7Cgl9CgkKCWZvcihjb25zdCBwYWlyIDxjaGFyLGludD4gdHVwOiBzMV9tYXApIHsKCQlpZiAoZWRpdHMgPiAxKQoJCQlyZXR1cm4gIkZhbHNlIjsKCQlpZiAodHVwLnNlY29uZCA+IDApCgkJCWVkaXRzICs9IDE7Cgl9CgoKCXJldHVybiAiVHJ1ZSI7Cn0KCgppbnQgbWFpbigpIHsKCXN0cmluZyBmaXJzdFtdID0geyJwYWxlIiwgInBhbGVzIiwgInBhbGUiLCAicGFsZSJ9OwoJc3RyaW5nIHNlY29uZFtdID0geyJwbGUiLCAicGFsZSIsICJiYWxlIiwgImJhZSJ9OwoJZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCgkJY291dCA8PAlpc09uZUF3YXkoZmlyc3RbaV0sIHNlY29uZFtpXSkgPDwgZW5kbDsJCglyZXR1cm4gMDsKfQ==