# ./appleby-contest-20-p3-ridiculous-string.yml
import sys
MN = 5 * 10**5 + 5;
OA = ord('a')
inf = int(10**9)
N, M = map(int, input().split())
s = input()
T = input()
nxt = [[inf]*26 for _ in range(N+1)]
for i in range(N):
c = ord(s[i]) - OA
if nxt[N][c] == inf:
nxt[N][c] = i
for i in range(N-1, -1, -1):
c = ord(s[i]) - OA
for j in range(26):
nxt[i][j] = nxt[i+1][j]
nxt[i][c] = i
ans = -1
for i in range(M):
c = ord(T[i]) - OA
t = nxt[(ans + 1) % N][c]
loc = ans % N
delta = t - loc
if t == inf:
print(-1)
sys.exit(0)
if delta <= 0: delta += N
ans += delta
print(ans+1)