import java.nio.ByteBuffer;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	}

	private static byte[] toBytes(int n) {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	}

	private static int judgeByte(byte b) {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	}
} import java.nio.ByteBuffer; ByteBuffer java.nio import java.io.BufferedReader; BufferedReader java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	}

	private static byte[] toBytes(int n) {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	}

	private static int judgeByte(byte b) {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	}
} Main public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	} main {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) StringBuilder sb = new StringBuilder(1200); sb new StringBuilder(1200) do {
			sb.append(br.readLine());
		} while (br.ready()); br.ready() br.ready br {
			sb.append(br.readLine());
		} sb.append(br.readLine()) sb.append sb br.readLine() br.readLine br String str = sb.toString(); str sb.toString() sb.toString sb int len = str.length(); len str.length() str.length str int[] alpabetCnt = new int[26]; alpabetCnt new int[26] 26 for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		} int i = 0; int i = 0; i 0 i < len i len i++ i++ i {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		} {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		} byte[] bytes = String.valueOf(str.charAt(i)).getBytes(); bytes String.valueOf(str.charAt(i)).getBytes() String.valueOf(str.charAt(i)).getBytes String.valueOf(str.charAt(i)) String.valueOf String str.charAt(i) str.charAt str i int index = 0; index 0 boolean flg = true; flg true for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			} byte b bytes {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			} {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			} if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				} judgeByte(b) == 0 judgeByte(b) judgeByte b 0 {
					flg = false;
				} flg = false flg false if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				} judgeByte(b) == -1 judgeByte(b) judgeByte b -1 1 {
					index = b % 65;
				} index = b % 65 index b % 65 b 65 if (judgeByte(b) == 1) {
					index = b % 97;
				} judgeByte(b) == 1 judgeByte(b) judgeByte b 1 {
					index = b % 97;
				} index = b % 97 index b % 97 b 97 if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1; flg alpabetCnt[index] = alpabetCnt[index] + 1 alpabetCnt[index] alpabetCnt index alpabetCnt[index] + 1 alpabetCnt[index] alpabetCnt index 1 String label = "a"; label "a" for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		} int cnt alpabetCnt {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		} {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		} System.out.println(label + " : " + cnt) System.out.println System.out System System.out label + " : " + cnt label + " : " + cnt label " : " cnt byte[] bs = label.getBytes(); bs label.getBytes() label.getBytes label bs = toBytes(bs[0] + 1) bs toBytes(bs[0] + 1) toBytes bs[0] + 1 bs[0] bs 0 1 label = new String(bs, "US-ASCII") label new String(bs, "US-ASCII") String[] args args private static byte[] toBytes(int n) {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	} toBytes {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	} byte[] bs = new byte[1]; bs new byte[1] 1 bs[0] = (byte) (0x000000ff & (n)) bs[0] bs 0 (byte) (0x000000ff & (n)) 0x000000ff (n) return bs; bs int n n private static int judgeByte(byte b) {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	} judgeByte {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	} if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		} b < 65 | (b > 90 & b < 97) | b > 122 b < 65 | (b > 90 & b < 97) | b > 122 b < 65 b 65 (b > 90 & b < 97) b > 90 b 90 b < 97 b 97 b > 122 b 122 {
			return 0;
		} return 0; 0 if (b < 91) {
			return -1;
		} b < 91 b 91 {
			return -1;
		} return -1; -1 1 return 1; 1 byte b b public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	}

	private static byte[] toBytes(int n) {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	}

	private static int judgeByte(byte b) {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	}
} public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	}

	private static byte[] toBytes(int n) {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	}

	private static int judgeByte(byte b) {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	}
} Main
import java.nio.ByteBuffer;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder(1200);
		do {
			sb.append(br.readLine());
		} while (br.ready());
		String str = sb.toString();
		int len = str.length();
		int[] alpabetCnt = new int[26];
		for (int i = 0; i < len; i++) {
			byte[] bytes = String.valueOf(str.charAt(i)).getBytes();
			int index = 0;
			boolean flg = true;
			for (byte b : bytes) {
				if (judgeByte(b) == 0) {
					flg = false;
				}
				else if (judgeByte(b) == -1) {
					index = b % 65;
				}
				else if (judgeByte(b) == 1) {
					index = b % 97;
				}
			}
			if (flg)
				alpabetCnt[index] = alpabetCnt[index] + 1;
		}
		String label = "a";
		for (int cnt : alpabetCnt) {
			System.out.println(label + " : " + cnt);
			byte[] bs = label.getBytes();
			bs = toBytes(bs[0] + 1);
			label = new String(bs, "US-ASCII");
		}
	}

	private static byte[] toBytes(int n) {
		byte[] bs = new byte[1];
		bs[0] = (byte) (0x000000ff & (n));
		return bs;
	}

	private static int judgeByte(byte b) {
		if (b < 65 | (b > 90 & b < 97) | b > 122) {
			return 0;
		}
		if (b < 91) {
			return -1;
		}
		return 1;
	}
}