Generating permutations with repetitions of string
I'm not going to rewrite this code right now, but I can highlight a few points:


Naming. 

Identifiers should have a meaningful name.
Disemvoweling is evil.
Adding a 1 after an identically-named variable is bad.
Adding a 2 after an identically-named variable is terrible.
Adding 21 instead of a 3 after an identically-named variable is careless.
If you think you need the same variable 3 times in one function, something's not right. Right? I think Tim's comment on your original post has a huge golden clue on that matter.

UI is for presentation. Logic that isn't presentation logic shouldn't need to know there's a UI involved.

Decoupling your logic from the UI helps making your code testable.
Learn to pass parameters into your functions.
Knowing exactly what's involved is very hard to tell, we need to puzzle out the whole thing just to figure out what RichTextBox1 is supposed to contain; your naming isn't helping.

Implicit string-to-numeric conversion is ugly and bug-prone, especially with user input.

Assume the user is a 3 year old that could click anywhere and enter anything in any TextBox.

You have many, many, many things to worry about before you can think of improving performance.

Using Random isn't making it any faster. I don't think Random is warranted here.
Access the UI once to get the values you need, once to write the values you've computed; pass the values as parameters (I said that before, I'll say it again - here, done).
It's not the job of a permutation function to access the UI. Ever. Take values in (as parameters), do your thing, spit out a result (as a return value).
perm (bad name) shouldn't be an instance variable. Not even a parameter. It's only meaningful within the permutate function: that's where it belongs.



That's all folks! I might edit this post later with actual code.