Java
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String a = scanner.next();
String b = scanner.next();
scanner.close();
Map<Character, Integer> mp = new HashMap<>();
for (char c : a.toCharArray()) {
mp.put(c, mp.getOrDefault(c, 0) + 1);
}
for (char c : b.toCharArray()) {
mp.put(c, mp.getOrDefault(c, 0) - 1);
}
int n1 = 0, n2 = 0;
for (Map.Entry<Character, Integer> entry : mp.entrySet()) {
int count = entry.getValue();
if (count > 0) {
n1 += count;
} else if (count < 0) {
n2 -= count;
}
}
if (n2 > 0) {
System.out.println("No " + n2);
} else {
System.out.println("Yes " + n1);
}
}
}
C++
#include <iostream>
#include <cstring>
#include <unordered_map>
using namespace std;
string a, b;
unordered_map<char, int> mp;
int main() {
cin >> a >> b;
for (auto c: a) mp[c]++;
for (auto c: b) mp[c]--;
int n1 = 0, n2 = 0;
for (auto it: mp) {
if (it.second > 0) n1 += it.second;
else n2 -= it.second;
}
if (n2 > 0) cout << "No " << n2 << endl;
else cout << "Yes " << n1 << endl;
return 0;
}