Java 8、132  110  87 74バイト
n->{int c=0;for(;(n+"").chars().distinct().count()!=10;n*=2)c++;return c;}
@OlivierGrégoireに感謝-57バイト。
説明:
ここで試してみてください。(注:22 68で停止する必要があるため、テストケースは無効になっていますが、サイズはlong2 63 -1に制限されています。)
n->          // Method with long parameter and integer return-type
  int c=0;   //  Count-integer, starting at 0
  for(;(n+"").chars().distinct().count()!=10;
             //  Loop (1) as long as the unique amount of digits in the number are not 10
    n*=2)    //    After every iteration: multiply the input by 2
   c++;      //   Increase the count by 1
             //  End of loop (1) (implicit / single-line body)
  return c;  //  Return the counter
}            // End of method
入力と正規表現を使用した古い132バイトの回答String:
n->f(n,0)int f(String n,int c){String t="";for(int i=0;i<10;t+="(?=.*"+i+++")");return n.matches(t+".*")?c:f(new Long(n)*2+"",c+1);}
ここで試してみてください。(注:のテストケース2わずかな再帰が原因でStackOverflowExceptionが発生するためは無効になっています。)
文字列に9桁すべてが含まれているかどうかを確認する正規表現の合計^(?=.*0)(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5)(?=.*6)(?=.*7)(?=.*8)(?=.*9).*$は、文字列全体に対して正の先読みを使用します。