import java.util.HashMap;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    }
    
	//フィールド
    Scanner sc;
    String w;
    
    //入力
    Main(Scanner sc) {
        this.sc = sc;
        this.w = sc.next();
    }
    
    //解答処理
    private String solve() {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    }
    
    //美しい文字列か判定するメソッド
    private boolean beautiful(String w) {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    }
    
    //出力
    public void show(String answer) {
        System.out.println(answer);
    }

} import java.util.HashMap; HashMap java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    }
    
	//フィールド
    Scanner sc;
    String w;
    
    //入力
    Main(Scanner sc) {
        this.sc = sc;
        this.w = sc.next();
    }
    
    //解答処理
    private String solve() {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    }
    
    //美しい文字列か判定するメソッド
    private boolean beautiful(String w) {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    }
    
    //出力
    public void show(String answer) {
        System.out.println(answer);
    }

} Main //フィールド
    Scanner sc; sc String w; w public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    } main {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) Main m = new Main(sc); m new Main(sc) m.show(m.solve()) m.show m m.solve() m.solve m sc.close() sc.close sc String[] args args //入力
    Main(Scanner sc) {
        this.sc = sc;
        this.w = sc.next();
    } Main {
        this.sc = sc;
        this.w = sc.next();
    } this.sc = sc this.sc this this.sc sc this.w = sc.next() this.w this this.w sc.next() sc.next sc Scanner sc sc //解答処理
    private String solve() {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    } solve {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    } String answer = "No"; answer "No" if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        } w.length() % 2 == 0 w.length() % 2 w.length() w.length w 2 0 {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        } if (beautiful(w)) {
        		answer = "Yes";
        	} beautiful(w) beautiful w {
        		answer = "Yes";
        	} answer = "Yes" answer "Yes" return answer; answer //美しい文字列か判定するメソッド
    private boolean beautiful(String w) {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    } beautiful {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    } boolean judge = true; judge true HashMap<String,Integer> map = new HashMap<String,Integer>(); map new HashMap<String,Integer>() map.put(String.valueOf(w.charAt(0)), 1) map.put map String.valueOf(w.charAt(0)) String.valueOf String w.charAt(0) w.charAt w 0 1 for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	} int i=1; int i=1; i 1 i<w.length() i w.length() w.length w i++ i++ i {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	} {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	} int count = 1; count 1 if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		} map.containsKey(String.valueOf(w.charAt(i))) map.containsKey map String.valueOf(w.charAt(i)) String.valueOf String w.charAt(i) w.charAt w i {
    			count += map.get(String.valueOf(w.charAt(i)));
    		} count += map.get(String.valueOf(w.charAt(i))) count map.get(String.valueOf(w.charAt(i))) map.get map String.valueOf(w.charAt(i)) String.valueOf String w.charAt(i) w.charAt w i map.put(String.valueOf(w.charAt(i)), count) map.put map String.valueOf(w.charAt(i)) String.valueOf String w.charAt(i) w.charAt w i count for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	} int tmp map.values() map.values map {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	} {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	} if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		} tmp % 2 != 0 tmp % 2 tmp 2 0 {
    			judge = false;
    			break;
    		} judge = false judge false break; return judge; judge String w w //出力
    public void show(String answer) {
        System.out.println(answer);
    } show {
        System.out.println(answer);
    } System.out.println(answer) System.out.println System.out System System.out answer String answer answer public class Main {
	public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    }
    
	//フィールド
    Scanner sc;
    String w;
    
    //入力
    Main(Scanner sc) {
        this.sc = sc;
        this.w = sc.next();
    }
    
    //解答処理
    private String solve() {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    }
    
    //美しい文字列か判定するメソッド
    private boolean beautiful(String w) {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    }
    
    //出力
    public void show(String answer) {
        System.out.println(answer);
    }

} public class Main {
	public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    }
    
	//フィールド
    Scanner sc;
    String w;
    
    //入力
    Main(Scanner sc) {
        this.sc = sc;
        this.w = sc.next();
    }
    
    //解答処理
    private String solve() {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    }
    
    //美しい文字列か判定するメソッド
    private boolean beautiful(String w) {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    }
    
    //出力
    public void show(String answer) {
        System.out.println(answer);
    }

} Main
import java.util.HashMap;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    }
    
	//フィールド
    Scanner sc;
    String w;
    
    //入力
    Main(Scanner sc) {
        this.sc = sc;
        this.w = sc.next();
    }
    
    //解答処理
    private String solve() {
        String answer = "No";
        if (w.length() % 2 == 0) {
        	if (beautiful(w)) {
        		answer = "Yes";
        	}
        }
        
        return answer;
    }
    
    //美しい文字列か判定するメソッド
    private boolean beautiful(String w) {
    	boolean judge = true;
    	
    	//HashMapに単語とその登場回数を格納
    	HashMap<String,Integer> map = new HashMap<String,Integer>();
    	map.put(String.valueOf(w.charAt(0)), 1);
    	for (int i=1; i<w.length(); i++) {
    		int count = 1;
    		if (map.containsKey(String.valueOf(w.charAt(i)))) {
    			count += map.get(String.valueOf(w.charAt(i)));
    		}
    		map.put(String.valueOf(w.charAt(i)), count);
    	}
    	
    	//各文字の登場回数が偶数個か判定
    	for (int tmp : map.values()) {
    		if (tmp % 2 != 0) {
    			judge = false;
    			break;
    		}
    	}
    	
    	return judge;
    }
    
    //出力
    public void show(String answer) {
        System.out.println(answer);
    }

}
