Perhaps most of you know the Send + More = Money. Well, I'm currently learning java and one of the exercises is I have to solve HES + THE = BEST.
Now, so far I can/should use if-for-while-do loops, nothing else. Although I'm sure there are different methods to solve it, that's not the point of the exercise I'm going through. I have to be able to use if-for-while-do loops the most efficient way.
My problem? I can't seem to think of an efficient way to solve it! I've come up with this, which solves the puzzle, but is perhaps the worst efficient way to do so:
public class Verbalarithmetics {
    public static void main (String args[]) {
     // Countint Variables
     int index_h = 0;
     int index_e = 0;
     int index_s = 0;
     int index_t = 0;
     int index_b = 0;
     // Start with h = 1 and increase until the else-if statement is true
     for(int h = 1; h <= 9; h++) { // h = 1, because first Symbol can't be zero
      index_h++;
       // Increase e so long until e equals h
       for(int e = 0; e <= 9; e++) {
        index_e++;
           if (e == h) {
              continue;
           }
           // Increase s so long until s equals h or e
           for(int s = 0; s <= 9; s++) {
            index_s++;
              if (s == h || s == e) {
                 continue;
              }//end if
              // Increase t so long until t equals h or e or s.
              for(int t = 1; t <= 9; t++) { // t = 1, because 1st Symbol cant be zero
               index_t++;
                if(t == h || t == e || t == s) {
                   continue;
                }// end if
                // Increase b so long until b equals h, e, s or t.
                for(int b = 1; b <= 9; b++) { // b = 1, weil das 1. Symbol nicht für eine 0 stehen darf
                 index_b++;
                    if (b == h || b == e || b == s || b == t) {
                        continue;
                    }// end if
           // x = 100*h + 10*e + s
           // y = 100*t + 10*h + e
           // z = 1000*b + 100*e + 10*s + t
                    // Check if x+y=z, if true -> Print out Solution, else continue with the upper most loop
                    else 
                     if (100*h + 10*e + s + 100*t + 10*h + e == 1000*b + 100*e +10*s + t) {
                      System.out.println("HES + THE = BEST => " + h + e + s + " + " + t + h + e + " = " + b + e + s + t);
                      System.out.println("With H=" + h + ", E=" + e + ", S=" + s + ", T=" + t + ", und B=" + b + ".");
                      System.out.println("It took " + index_h + 
                        " Loop-Cycles to find 'h' !");
                      System.out.println("It took " + index_e + 
                        " Loop-Cycles to find 'e' !");
                      System.out.println("It took " + index_s + 
                        " Loop-Cycles to find 's' !");
                      System.out.println("It took " + index_t + 
                        " Loop-Cycles to find 't' !");
                      System.out.println("It took " + index_b + 
                        " Loop-Cycles to find 'b' !");
                      System.out.println("This is a total of " + (index_h + index_e + index_s + index_t + index_b) + 
                        " Loop-Cycles");
                    }// end else if
                }//end for
              }//end for
           }//end for
        }//end for
     }//end for
    } 
}
It takes about 15000 odd loop-cycles in total to solve this puzzle. That's a lot in my opinion. Any pointers, please?
To the editiors: Would you pretty please refrain from adding in "homework" as a tag? This isn't homework. This is self-exercise. What? I can't read a book and do exercises according to it? It has to be homework?...seriously, stop it.