public static int getMinTransform(String str1,String str2)
{
if (null == str1 || null == str2) return -1;
if (str1.length() != str2.length()) return -1;
if (str1.equals(str2)) return 0;
int n = str1.length(), size1 = 0, size2 = 0, p = 0, q = 0;
boolean[] v1 = new boolean[30];
boolean[] v2 = new boolean[30];
for (int i = 0; i < n; i++) {
p = str1.charAt(i) - 'a';
q = str2.charAt(i) - 'a';
if (!v1[p]) {
size1++;
v1[p]=true;
}
if (!v2[q]) {
size2++;
v2[q]=true;
}
}
if (size2 == 26 || size1 < size2) return -1;
char[] s1ToS2 = new char[30];
char c = '.';
for (int i = 0; i < 26; i++) s1ToS2[i] = '.';
for (int i = 0; i < n; i++) {
p = str1.charAt(i) - 'a';
c = str2.charAt(i);
if (s1ToS2[p] == '.' || s1ToS2[p] == c) {
s1ToS2[p] = c;
}
else return -1;
}
int[] cnt = new int[28];
for(int i=0;i<26;++i){
if(s1ToS2[i]=='.') continue;
int x = s1ToS2[i]-'a';
//System.out.println(s1ToS2[i]-'a');
cnt[x]++;
}
int ans=0;
for(int i=0;i<26;++i) {
ans+=cnt[i];
}
int tmpans=0;
for(int i=0;i<26;++i){
if(s1ToS2[i]!='.'){
// System.out.println(s1ToS2[s1ToS2[i]-'a']);
//System.out.println(i+'a');
if(s1ToS2[s1ToS2[i]-'a'] == i+'a'){
tmpans++;
}
}
}
ans+=tmpans/2;
System.out.println(ans);
return ans;
}