import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] sa = br.readLine().split(" "); int n = Integer.parseInt(sa[0]); int m = Integer.parseInt(sa[1]); String[] s = new String[n]; for (int i = 0; i < n; i++) { s[i] = br.readLine(); } br.close(); Arrays.sort(s, Collections.reverseOrder()); Node root = new Node(); for (int i = 0; i < m; i++) { Node o = root; for (int j = 0; j < s[i].length(); j++) { char c = s[i].charAt(j); Node o2 = o.map.get(c); if (o2 == null) { o2 = new Node(); o2.c = c; o.map.put(c, o2); } o = o2; } o.end = true; } String ans = dfs(root, new StringBuilder()); if (ans == null) { System.out.println("No"); } else { System.out.println("Yes"); System.out.println(ans); } } static String dfs(Node o, StringBuilder sb) { if (o.end) { return null; } for (char c = 'a'; c <= 'z'; c++) { sb.append(c); if (o.map.containsKey(c)) { String res = dfs(o.map.get(c), sb); if (res != null) { return res; } } else { return sb.toString(); } sb.deleteCharAt(sb.length() - 1); } return null; } static class Node { char c; Map map = new HashMap<>(); boolean end; } }