public String shortestCompletingWord(String licensePlate, String[] words) {
for (char c : licensePlate.toCharArray()) {
if (Character.isLetter(c)) {
++map[Character.toLowerCase(c) - 'a'];
int minLen = Integer.MAX_VALUE;
for (String word : words) {
if (word.length() >= minLen) continue;
if (!match(word, map)) continue;
public boolean match(String word, int[] map) {
int[] wordMap = new int[26];
for (char c : word.toCharArray()) {
for (int i = 0; i < 26; i++) {
if (map[i] != 0 && wordMap[i] < map[i]) {