fork download
  1. // Connected Components
  2. //https://docs.google.com/document/d/1sgA5C_JzwPK8Qrip98Ignjj1NI29bqlIpmpg2SHKTTw/edit?tab=t.0
  3.  
  4. import java.io.*;
  5. import java.util.*;
  6.  
  7.  
  8. class Main {
  9. static char[] par;
  10. static List<Character> list;
  11. public static void main(String[] args)throws IOException {
  12. String s1=br.readLine();
  13. String s2=br.readLine();
  14. if(s1.length()!=s2.length()) System.out.println(-1);
  15. else{
  16. int flag=0;
  17. for(int i=0;i<s1.length();i++){
  18. if((int)s1.charAt(i)>(int)s2.charAt(i)){
  19. System.out.println(-1);
  20. flag=1;
  21. break;
  22. }
  23. }
  24. if(flag==0){
  25. list=new ArrayList<>();
  26. for(int i=0;i<s1.length();i++){
  27. if(!list.contains(s1.charAt(i))) list.add(s1.charAt(i));
  28. if(!list.contains(s2.charAt(i))) list.add(s2.charAt(i));
  29.  
  30. }
  31. par=new char[list.size()];
  32. for(int i=0;i<list.size();i++){
  33. par[i]=list.get(i);
  34. }
  35. for(int i=0;i<s1.length();i++){
  36. setPar(s2.charAt(i),s1.charAt(i));
  37. }
  38. int count=0, ans=0;
  39. List<Character> con=new ArrayList<>();
  40. for(int i=0;i<list.size();i++){
  41. char a=findPar(list.get(i));
  42. if(!con.contains(a)){
  43. count=1;
  44. for(int j=i+1;j<list.size();j++){
  45. if(findPar(list.get(j))==a){
  46. count++;
  47. }
  48. }
  49. ans+=count-1;
  50. con.add(a);
  51. }
  52. }
  53. System.out.println(ans);
  54. }
  55. }
  56. return;
  57. }
  58. static char findPar(char a){
  59. if(par[list.indexOf(a)]==a) return a;
  60. return findPar(par[list.indexOf(a)]);
  61. }
  62. static void setPar(char a, char b){
  63. char parA=findPar(a);
  64. par[list.indexOf(b)]=parA;
  65. return;
  66. }
  67. }
Success #stdin #stdout 0.09s 53200KB
stdin
aabbdd
dddddd
stdout
2