Regular expression for words in a language where each letter appears at least once
A DFA for your language is:


The name of the states are self descriptive.

Following comments from D.W., here is a way to compute such an automaton. It is a bit tedious and error prone by hand, but easy to do by computer with the proper algorithms. These ideas are to be found in this reference question.

You define 3 languages on the alphabet $\Sigma^*=\{a,b,c\}$, $L_a$, $L_b$, and $L_c$, such that each contains all string that have at least one occurrence of the subscript symbol.

For example $L_a=\{w\mid |w|_a\geq 1\}$

The language you want is $L_a\cap L_b \cap L_c$.

The corresponding finite automata are much easier to define. Then you only have to apply twice the standard crossproduct construction to get the automaton for the intersection.

The advantage of using standard construction is that it spares you the need to prove your result correct (if done by a computer ... I would not trust a human being).

A regular expression is:

$$\begin{align}   (\;\;\;
    (aa^*b &amp; +bb^*a)(a+b)^*c \\
   +(bb^*c &amp; +cc^*b)(b+c)^*a \\
   +(cc^*a &amp; +aa^*c)(c+a)^*b\;\;\;) \;\;  (a+b+c)^*
\end{align}$$

You can more or less read it from the DFA. Otherwise, just use the standard algorithms, and good luck.