#include <bits/stdc++.h>
using namespace std;
const long long int inf = (1LL << 60) - 1;
const long long int N = 3e5 + 5;
vector<pair<long long int, long long int>> graph[N];
vector<bool> visited(N);
long long int arr[N], b[N];
long long int n, m, k;
bool cmp(pair<long long int, long long int> a,
         pair<long long int, long long int> b) {
  return a.second < b.second;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int T = 1;
  while (T--) {
    cin >> n >> k;
    string s;
    cin >> s;
    set<char> st;
    for (long long int i = 0; i < k; i++) {
      char x;
      cin >> x;
      st.insert(x);
    }
    long long int i = 0;
    long long int ans = 0;
    while (i < n) {
      if (st.find(s[i]) != st.end()) {
        long long int j = i;
        while (j < n && st.find(s[j]) != st.end()) j++;
        long long int res = j - i;
        ans += res * (res + 1) / 2;
        i = j;
      } else {
        i++;
      }
    }
    cout << ans << endl;
  }
}
