import java.util.ArrayList;
import java.util.List;
public class SubSetCount {
public static void main(String[] args) {
String test = new String("ABCD");
char[] a = test.toCharArray();
double size = Math.pow(a.length, 2);
List<String> result = new ArrayList<String>();
int index = (1 << 1) - 1;
final char[] array = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
for(int i = 0 ; i < size ; i++){
if(i == 0) {result.add("{}");continue;}
int value = i;
char[] temp = new char[32];
int t = temp.length;
do{
temp[--t] = array[ value & index];
value >>>= 1;
}while(value != 0);
StringBuffer at = new StringBuffer(new String(temp,t,temp.length - t));
if(at.length() < test.length()){
int l = at.length();
for(int j = 0 ; j < test.length() - l ; j++){
at.insert(0, '0');
}
}
String r = "";
boolean sign = false;
for(int k = 0 ; k < at.length() ; k++){
if(at.charAt(k) == '1'){
r += a[k];
sign = true;
}
}
if(sign)
result.add(r.intern().trim());
}
for(int i = 0 ; i < result.size() ; i++){
System.out.println(result.get(i));
}
}
}