#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimization("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")
using namespace std;
int main() {
  string s1, s2;
  cin >> s1 >> s2;
  vector<vector<int>> v(26);
  for (int i = 0; i < s1.size(); i++) {
    v[s1[i] - 'a'].push_back(i);
  }
  int j = 0, x = 1;
  for (auto i : s2) {
    if (v[i - 'a'].empty()) {
      cout << -1;
      return 0;
    }
    if (lower_bound(v[i - 'a'].begin(), v[i - 'a'].end(), j) ==
        v[i - 'a'].end()) {
      j = (*lower_bound(v[i - 'a'].begin(), v[i - 'a'].end(), 0));
      j++;
      x++;
    } else
      j = (*lower_bound(v[i - 'a'].begin(), v[i - 'a'].end(), j)) + 1;
  }
  cout << x;
  return 0;
}
