
이 문제에서 그룹 단어 여부를 판명짓는 요소는 단어의 연속성의 유일성이다.
단어가 연속적으로 나오고 그 연속적인 단어의 묶음은 단 한 번만 존재해야 하는 것이다.

예제 입력 1을 보자
1) h a pp y
happy 라는 단어에서는 알파벳의 종류가 h,a,p,y 로 총 4개가 나왔고 변한 횟수는 3 번이다.
2) n e w
new 라는 단어에서는 알파벳의 종류가 n,e,w 로 총 3개가 나왔고 변한 횟수는 2 번이다.
3)y e a r
year 라는 단어에서는 알파벳의 종류가 y,e,a,r로 총 4개가 나왔고 변한 횟수는 3 번이다.
모두가 그룹 단어이기 때문에 3을 출력한다.
예제 입력 2를 보자
1) a b a
aba 라는 단어에서는 알파벳의 종류가 a,b 로 총 2개가 나왔고 변한 횟수는 2 번이다.
2) a b a b
abab 라는 단어에서는 알파벳의 종류가 a,b 로 총 2개가 나왔고 변한 횟수는 3 번이다.
3) a b c a b c
abcabc 라는 단어에서는 알파벳의 종류가 a,b,c 로 총 3개가 나왔고 변한 횟수는 5 번이다.
4) a
a 라는 단어에서는 알파벳의 종류가 a 로 총 1개가 나왔고 변한 횟수는 0 번이다.
그룹 단어는 4번째 입력 값인 a 하나 이므로 1 을 출력한다.
위 두 예제에서 우리는 알파벳의 종류 = 변한 횟수 + 1 이라는 것을 알 수 있다.
그렇다면 우리는 알파벳의 개수인 26의 크기를 가진 Int 배열을 선언하고 위에서 우리가 알아낸 조건과 맞는 것들만 카운트 해주면 되겠다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int n = keyboard.nextInt();
keyboard.nextLine();
int[] alphabet = new int[26];
int count = 0, change, pos, alphabet_count;
String str;
for (int j = 0; j < n; j++) {
for (int i = 0; i < 26; i++)
alphabet[i] = 0;
change = 0;
alphabet_count = 0;
str = keyboard.nextLine();
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
pos = ch[i] - 97;
alphabet[pos]++;
if (i > 0 && pos != ch[i - 1] - 97)
change++;
}
for (int i = 0; i < 26; i++) {
if (alphabet[i] != 0)
alphabet_count++;
}
if (alphabet_count - change == 1)
count++;
}
System.out.println(count);
}
}