public static ArrayList<String> anagrams(String[] strs) {
		if(strs == null || strs.length < 2) {
			return new ArrayList<String>();
		}
		Map<Integer, List<Integer>> cache = new HashMap<Integer, List<Integer>>();

		for (int i = 0; i < strs.length; i++) {
			String s = strs[i];
			int mark = mark(s);
			List<Integer> indexes = null;
			if(cache.containsKey(mark)) {
				indexes = cache.get(mark);
			} else {
				indexes = new ArrayList<Integer>();
			}
			indexes.add(i);
			cache.put(mark, indexes);
		}
		
		ArrayList<String> result = new ArrayList<String>();
		for(List<Integer> indexes : cache.values()) {
			if(indexes.size() > 1) {
				for(int i : indexes) {
					result.add(strs[i]);
				}
			}
		}
		return result;
	}