/* 用map记录x每一个字符出现的频数 先比较两个字符串是否长度不同或值不同 再比较相应的map是否相同 */ package main import ( "bufio" "fmt" "os" "sort" "strconv" "strings" ) func check(s string, mp map[byte]int) bool { var mp_ = make(map[byte]int) for i:=0;i<len(s);i++{ mp_[s[i]]++ } for k, v := range mp { if mp_[k] != v{ return false } } return true } func main() { var n int scanner := bufio.NewScanner(os.Stdin) scanner.Scan() parts := strings.Split(scanner.Text(), " ") n, _ = strconv.Atoi(parts[0]) a := parts[1:n+1] length := len(parts) x := parts[length-2] k, _ := strconv.Atoi(parts[length-1]) var mp_x = make(map[byte]int) var result = make([]string, 0) for i:=0;i<len(x);i++{ mp_x[x[i]]++ } for i:=0;i<len(a);i++{ if len(a[i])!= len(x) || a[i] == x{ continue } if check(a[i], mp_x) { result = append(result, a[i]) } } sort.Strings(result) fmt.Println(len(result)) if k-1 < len(result){ fmt.Println(result[k-1]) } }