Given are two strings s and t consisting of lowercase English letters. Determine if there exists an integer i satisfying the following condition, and find the minimum such i if it exists.

* Let s' be the concatenation of 10^{100} copies of s. t is a subsequence of the string {s'}_1{s'}_2\ldots{s'}_i (the first i characters in s').

Constraints

* 1 \leq |s| \leq 10^5
* 1 \leq |t| \leq 10^5
* s and t consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:


s
t


Output

If there exists an integer i satisfying the following condition, print the minimum such i; otherwise, print `-1`.

Examples

Input

contest
son


Output

10


Input

contest
programming


Output

-1


Input

contest
sentence


Output

33
import java.util.*;

public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    String _s = sc.next();
    char[] t = sc.next().toCharArray();
    _s += _s;
    char[] s = _s.toCharArray();
    List<Queue<Integer>> que = new ArrayList<>();
    int N = s.length;
    int M = t.length;
    for(int i = 0; i < 26; i++){
      que.add(new ArrayDeque<>());
    }
    for(int i = 0; i < N; i++){
      s[i] -= 'a';
    }
    for(int i = 0; i < M; i++){
      t[i] -= 'a';
    }
    for(int i = 0; i < N; i++){
      que.get(s[i]).add(i);
    }
    int[][] map = new int[N][26];
    for(int[] is : map){
      Arrays.fill(is, Integer.MAX_VALUE / 3);
    }
    for(int i = 0; i < N; i++){
      map[i][s[i]] = 0;
    }
    for(int i = 0; i < 26; i++){
      for(int j = N - 1; j >= 0; j--){
        map[j][i] = Math.min(map[j][i], map[(j + 1) % N][i] + 1);
      }
    }
    
    for(int i = 0; i < 26; i++){
      for(int j = 0; j < N; j++){
        if(map[j][i] == 0){
          map[j][i] = map[(j + 1) % N][i] + 1;
        }
      }
    }
    
    long ans = 0;
    int idx = N/2 - 1;
    if(map[N/2 - 1][t[0]] > Integer.MAX_VALUE / 5){
      System.out.println(-1);
      return;
    }
    ans += map[N/2 - 1][t[0]];
    idx += map[N/2 - 1][t[0]];
    idx %= N/2;
    for(int i = 1; i < M; i++){
      if(map[idx][t[i]] > Integer.MAX_VALUE / 5){
        System.out.println(-1);
        return;
      }
      ans += map[idx][t[i]];
      idx += map[idx][t[i]];
      idx %= N/2;
    }
    System.out.println(ans);
  }
}