Here is a basic contribution, working with a closely related
question. We solve the problem where we have $j$ instances of each of
$n$ types of coupons and draw without replacement until we have seen
all $j$ coupons of some type. Using the notation from the following
MSE link we
introduce the marked generating function
$$\left(\sum_{k=0}^{j-2}
\frac{j!}{(j-k)!} \frac{z^k}{k!} + j w z^{j-1}\right)^n.$$
The coefficient on $[z^m]$ here represents distributions of sequences
of $m$ draws from the $n$ types according to probability, where the
ones that occur $j-1$ times have been marked. Each of the latter may
be augmented to a complete set of some color where the weight is one
because $j-1$ coupons have already been drawn. As we only need the
count we differentiate with respect to $w$ and set $w=1$, getting
$$n\times \left(\sum_{k=0}^{j-1}
\frac{j!}{(j-k)!} \frac{z^k}{k!}\right)^{n-1}
\times j z^{j-1}.$$
With the method from the linked post we thus obtain for the
probability
$$P[T = m] = \frac{1}{m!} {nj\choose m}^{-1}
(m-1)! [z^{m-1}] n j z^{j-1} \left(\sum_{k=0}^{j-1}
\frac{j!}{(j-k)!} \frac{z^k}{k!}\right)^{n-1}
\\ = \frac{1}{m!} {nj\choose m}^{-1} \times n \times j \times
(m-1)! [z^{m-1}] z^{j-1} (-z^j + (1+z)^j)^{n-1}.$$
Extracting the coefficient we find
$${nj-1\choose m-1}^{-1} [z^{m-j}]
\sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q} z^{j(n-1-q)}
(1+z)^{qj}
\\ = {nj-1\choose m-1}^{-1}
\sum_{q=0}^{n-1} [z^{m-j(n-q)}] {n-1\choose q} (-1)^{n-1-q}
(1+z)^{qj}
\\ = {nj-1\choose m-1}^{-1}
\sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{qj\choose m-j(n-q)}
\\ = {nj-1\choose m-1}^{-1}
\sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{qj\choose nj-m}.$$
Observe that
$${qj\choose nj-m} {nj-1\choose m-1}^{-1}
= \frac{(qj)! (m-1)! } {(nj-1)! (m-(n-q)j)! }
\\ = {nj-1\choose qj}^{-1} {m-1 \choose m-(n-q)j}.$$
We record for the probabilities the formula
$$\bbox[5px,border:2px solid #00A000]{
P[T=m] = \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{nj-1\choose qj}^{-1} {m-1 \choose (n-q)j-1}.}$$
We now verify that this is a probability distribution.
This requires the value of
$$\sum_{m=j}^{n(j-1)+1} {m-1 \choose (n-q)j-1}
= \sum_{m=j-1}^{n(j-1)} {m\choose (n-q)j-1}
\\ = [z^{(n-q)j-1}] \sum_{m=j-1}^{n(j-1)} (1+z)^m
= [z^{(n-q)j}] ( (1+z)^{n(j-1)+1} - (1+z)^{j-1} ).$$
With $0\le q\le n-1$ the second term does not contribute and we may
continue with
$$ \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{nj-1\choose qj}^{-1} {n(j-1)+1\choose (n-q)j}
\\ = \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{nj-1\choose qj}^{-1} {nj+1-n\choose qj+1-n}
\\ = \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q} \frac{qj}{nj-qj}
{nj-1\choose qj-1}^{-1} {nj+1-n\choose qj+1-n}
\\ = \sum_{q=1}^{n-1} {n-1\choose q-1} (-1)^{n-1-q}
{nj-1\choose qj-1}^{-1} {nj+1-n\choose qj+1-n}.$$
Observe once more that
$${nj-1\choose qj-1}^{-1} {nj+1-n\choose qj+1-n}
= \frac{(nj+1-n)! \times (qj-1)!}{(nj-1)! \times (qj+1-n)!}
\\ = {nj-1\choose n-2}^{-1} {qj-1\choose n-2}.$$
We thus find for the sum of the probabilities
$${nj-1\choose n-2}^{-1}
\sum_{q=1}^{n-1} {n-1\choose q-1} (-1)^{n-1-q}
{qj-1\choose n-2}
\\ = {nj-1\choose n-2}^{-1}
\sum_{q=0}^{n-2} {n-1\choose q} (-1)^{n-q}
{qj+j-1\choose n-2}
\\ = 1 + \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-q}
{qj+j-1\choose n-2}.$$
The sum vanishes, as in
$$\sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-q}
[z^{n-2}] (1+z)^{qj+j-1}
\\ = [z^{n-2}] (1+z)^{j-1}
\sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-q} (1+z)^{qj}
\\ = [z^{n-2}] (1+z)^{j-1} (1-(1+z)^j)^{n-1},$$
but $(1-(1+z)^j)^{n-1} = (-1)^{n-1} j^{n-1} z^{n-1} + \cdots$ and
there is no contribution. This confirms it being a probability
distribution.
Continuing with the expectation we require the value of
$$\sum_{m=j}^{n(j-1)+1} m {m-1 \choose (n-q)j-1}
= (n-q)j \sum_{m=j}^{n(j-1)+1} {m \choose (n-q)j}
\\ = (n-q)j [z^{(n-q)j}] \sum_{m=j}^{n(j-1)+1} (1+z)^m
\\ = (n-q)j [z^{(n-q)j+1}] ((1+z)^{n(j-1)+2} - (1+z)^j)
= (n-q)j {n(j-1)+2\choose (n-q)j+1}.$$
The second term did not contribute since we have $(n-q)j+1\gt j.$
We thus have for the expectation
$$j \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{nj-1\choose qj}^{-1} (n-q) {n(j-1)+2\choose (n-q)j+1}
\\ = j \sum_{q=0}^{n-1} {n-1\choose q} (-1)^{n-1-q}
{nj-1\choose qj}^{-1} (n-q) {nj+2-n\choose qj+1-n}
\\ = j \sum_{q=1}^{n-1} {n-1\choose q} (-1)^{n-1-q}
\frac{qj}{nj-qj} {nj-1\choose qj-1}^{-1} (n-q)
\\ \times \frac{nj+2-n}{nj-qj+1}
{nj+1-n\choose qj+1-n}
\\ = j (nj+2-n) \sum_{q=1}^{n-1} q {n-1\choose q} (-1)^{n-1-q}
{nj-1\choose qj-1}^{-1}
\frac{1}{nj-qj+1}
{nj+1-n\choose qj+1-n}.$$
Re-using the earlier factorization we get
$$j (nj+2-n) {nj-1\choose n-2}^{-1}
\sum_{q=1}^{n-1} q {n-1\choose q} (-1)^{n-1-q}
\frac{1}{nj-qj+1}
{qj-1\choose n-2}
\\ = j (nj+2-n) (n-1) {nj-1\choose n-2}^{-1}
\sum_{q=1}^{n-1} {n-2\choose q-1} (-1)^{n-1-q}
\frac{1}{nj-qj+1}
{qj-1\choose n-2}
\\ = j^2 n (nj+1) {nj+1\choose n-1}^{-1}
\\ \times
\sum_{q=0}^{n-2} {n-2\choose q} (-1)^{n-q}
\frac{1}{nj-qj-j+1}
{qj+j-1\choose n-2}.$$
Working with the sum term we have
$${n-2\choose q} (-1)^{n-q}
\frac{1}{nj-qj-j+1}
{qj+j-1\choose n-2}
\\ = \mathrm{Res}_{z=q}
\frac{1}{nj-j+1-zj}
\prod_{p=0}^{n-3} (zj+j-1-p)
\prod_{p=0}^{n-2} \frac{1}{z-p}.$$
Now since $\lim_{R\to\infty} 2\pi R \times R^{n-2}/R/R^{n-1} = 0$ and
residues sum to zero we may evaluate this by taking the negative of
the residue at $z=n-1+1/j$. This is the computation:
$$-\mathrm{Res}_{z=n-1+1/j}
\frac{1}{nj-j+1-zj}
\prod_{p=0}^{n-3} (zj+j-1-p)
\prod_{p=0}^{n-2} \frac{1}{z-p}
\\ = \frac{1}{j} \mathrm{Res}_{z=n-1+1/j}
\frac{1}{z-(n-1+1/j)}
\prod_{p=0}^{n-3} (zj+j-1-p)
\prod_{p=0}^{n-2} \frac{1}{z-p}
\\ = \frac{1}{j}
\prod_{p=0}^{n-3} (nj-p)
\prod_{p=0}^{n-2} \frac{1}{n-1+1/j-p}
\\ = \frac{1}{j} \times (n-2)! \times {nj\choose n-2} \times
j^{n-1} \prod_{p=0}^{n-2} \frac{1}{nj-j+1-pj}.$$
With
$${nj\choose n-2} {nj+1\choose n-1}^{-1}
= \frac{n-1}{nj+1}$$ we finally have the closed form
$$\bbox[5px,border:2px solid #00A000]{
E[T] = n! \times
j^n \times \prod_{p=0}^{n-2} \frac{1}{nj-j+1-pj}.}$$
To see what the asymptotics are we use the alternate form
$$\bbox[5px,border:2px solid #00A000]{
E[T] = n \times j \times
\frac{\Gamma(n)\Gamma(1+1/j)}{\Gamma(n+1/j)}.}$$
Keeping $j$ fixed and letting $n$ go to infinity yields the asymptotic
$$n\times j\times \Gamma(1+1/j) \times n^{-1/j}
= n^{1-1/j} \times j\times \Gamma(1+1/j).$$
There is an enumeration routine that may be compared to the closed
forms both of which were implemented in the following Maple code.
V :=
proc(n, j)
option remember;
local L, recurse, results;
results := 0;
recurse :=
proc(LL, sofar, prob)
local choice, cprob;
if numboccur(LL, 0) > 0 then
results := results + prob*u^nops(sofar);
return;
fi;
for choice to nops(LL) do
cprob := LL[choice]/(n*j-nops(sofar));
recurse([seq(LL[q], q=1..choice-1),
LL[choice]-1,
seq(LL[q], q=choice+1..nops(LL))],
[op(sofar), choice],
prob*cprob);
od;
end;
L := [seq(j, q=1..n)];
recurse(L, [], 1);
results;
end;
P := (n, j, m) -> n*j/binomial(n*j, m)/m
*coeftayl(z^(j-1)*(-z^j+(1+z)^j)^(n-1), z=0, m-1);
PGF := (n, j) -> add(P(n,j,m)*u^m, m=j..(j-1)*n+1);
EX := (n, j) -> add(P(n,j,m)*m, m=j..(j-1)*n+1);
P2 := (n, j, m) ->
add(binomial(n-1,q)*(-1)^(n-1-q)/binomial(n*j-1, q*j)
*binomial(m-1, m-(n-q)*j), q=0..n-1);
PGF2 := (n, j) -> add(P2(n,j,m)*u^m, m=j..(j-1)*n+1);
EX2 := (n, j) -> n!*j^n*mul(1/(n*j-j+1-p*j), p=0..n-2);
EXGAMMA := (n, j) -> n*j*GAMMA(n)*GAMMA(1+1/j)/GAMMA(n+1/j);
EXASYMPT := (n, j) -> n^(1-1/j)*j*GAMMA(1+1/j);
With the calculation that was presented here we want to make sure we
have the correct interpretation of the problem from the start. The
following basic program will do this by computing the expectation
through simulation. Consult for the details of the scenario under
investigation. The output is in fine agreement with the data i.e. the
closed form from above.
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <time.h>
#include <string.h>
int main(int argc, char **argv)
{
int n = 6 , j = 3, trials = 1000;
if(argc >= 2){
n = atoi(argv[1]);
}
if(argc >= 3){
j = atoi(argv[2]);
}
if(argc >= 4){
trials = atoi(argv[3]);
}
assert(1 <= n);
assert(1 <= j);
assert(1 <= trials);
srand48(time(NULL));
long long data = 0;
for(int tind = 0; tind < trials; tind++){
int src[n*j];
for(int cind = 0; cind < n*j; cind++)
src[cind] = cind/j;
int done = 0; int steps = 0;
int dist[n];
for(int cind = 0; cind < n; cind++)
dist[cind] = 0;
while(!done){
int cpidx = drand48() * (double)(n*j-steps);
int coupon = src[cpidx];
for(int cind=cpidx; cind < n*j-steps-1; cind++)
src[cind] = src[cind+1];
steps++;
dist[coupon]++;
if(dist[coupon] == j)
done = 1;
}
data += steps;
}
long double expt = (long double)data/(long double)trials;
printf("[n = %d, j = %d, trials = %d]: %Le\n",
n, j, trials, expt);
exit(0);
}