#include <bits/stdc++.h>


using namespace std;

ifstream in("swap.in");
ofstream out("swap.out");

string s1, s2; long long ans; int arb[100100];
queue <int> q[30];

void add(int i){
 for(; i <= 100000; i += (i & (-i))) arb[i]++;
}

int get(int i){
 int ans = 0;
 for(; i; i -= (i & (-i))) ans += arb[i];
 return ans;
}

int main(){
 getline(in, s1);
 getline(in, s2);
 for(int i = 0; i < s1.size(); i++) q[s1[i] - 'a'].push(i+1);
 for(int i = 0; i < s2.size(); i++){
  if(q[s2[i] - 'a'].empty()) return out << -1, 0;
  int pos = q[s2[i] - 'a'].front();
  q[s2[i] - 'a'].pop();
  ans += pos - i - 1 + get(s2.size()) - get(pos);
  add(pos);
 }
 out << ans;
 return 0;
}