import qualified Data.Set as S
import Data.Array

main = do
  s <- getLine
  t <- getLine
  let ans = compute s t
  print ans

compute :: String -> String -> Int
compute s t
  | not (S.isSubsetOf ts ss) = -1
  | True = loop 0 t 0
  where
    ss = S.fromList s
    ts = S.fromList t
    m = length s
    arr = array (('a',0),('z',m-1)) arrlist
    arrlist = [ ((c,i),f c i d) | c <- ['a'..'z'], (i,d) <- zip [0..] s ]
    f c i d
      | c == d = 1
      | True   = succ $ arr ! (c, mod (succ i) m)
    loop acc [] _ = acc
    loop acc (t:ts) i = loop (acc + d) ts ((i + d) `mod` m)
      where
        d = arr ! (t,i)

{-
sのそれぞれの位置に対して、a-zが何文字後に出現するかというテーブルを高速に作って、
tはその表を辿る感じで数えるのかな。

全ての c in ts に対して、
s!!i == c のとき、arr ! c ! i = 0
s!!i /= c のとき、arr ! c ! i = succ (arr ! c ! (succ i `mod` length s))
-}
