function hasCharacterAppearingExactlyTwice(line) {
const charCount = {};
for (let char of line) {
charCount[char] = (charCount[char] || 0) + 1;
}
return Object.values(charCount).includes(2);
}
try {
while (true) {
const line = readline();
if (line === null || line === undefined || line === '') {
break;
}
if (hasCharacterAppearingExactlyTwice(line)) {
console.log(line);
}
}
} catch (e) {
console.error("Error: Could not read input. Ensure the environment supports readline().");
}
ZnVuY3Rpb24gaGFzQ2hhcmFjdGVyQXBwZWFyaW5nRXhhY3RseVR3aWNlKGxpbmUpIHsKICAgIGNvbnN0IGNoYXJDb3VudCA9IHt9OwogICAgCiAgICBmb3IgKGxldCBjaGFyIG9mIGxpbmUpIHsKICAgICAgICBjaGFyQ291bnRbY2hhcl0gPSAoY2hhckNvdW50W2NoYXJdIHx8IDApICsgMTsKICAgIH0KICAgIAogICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoY2hhckNvdW50KS5pbmNsdWRlcygyKTsKfQoKdHJ5IHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgY29uc3QgbGluZSA9IHJlYWRsaW5lKCk7CiAgICAgICAgCiAgICAgICAgaWYgKGxpbmUgPT09IG51bGwgfHwgbGluZSA9PT0gdW5kZWZpbmVkIHx8IGxpbmUgPT09ICcnKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoaGFzQ2hhcmFjdGVyQXBwZWFyaW5nRXhhY3RseVR3aWNlKGxpbmUpKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGxpbmUpOwogICAgICAgIH0KICAgIH0KfSBjYXRjaCAoZSkgewogICAgY29uc29sZS5lcnJvcigiRXJyb3I6IENvdWxkIG5vdCByZWFkIGlucHV0LiBFbnN1cmUgdGhlIGVudmlyb25tZW50IHN1cHBvcnRzIHJlYWRsaW5lKCkuIik7Cn0=