#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
inline int power(int a, int b) {
int x = 1;
while (b) {
if (b & 1) x *= a;
a *= a;
b >>= 1;
}
return x;
}
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
//_ ***************************** START Below *******************************
vector<int> a;
vector<int> b;
int consistency(int n, int m){
int ans = 0;
int i = 0, j = 0;
while(i<n && j<m){
while(i<n && a[i] < b[j]) i++;
if(i==n) break;
while(j<m && b[j] < a[i]) j++;
if(j==m) break;
if(a[i] != b[j]) continue;
int p = i+1;
while(p<n && a[p] == a[i]) p++;
int q = j+1;
while(q<m && b[q] == b[j]) q++;
ans += (p-i)*(q-j);
i = p;
j = q;
}
return ans;
}
int practice(int n, int m){
return 0;
}
void solve() {
int n, m;
cin>>n >> m;
a.resize(n);
b.resize(m);
for(int i=0; i<n; i++) cin >> a[i];
for(int i=0; i<m; i++) cin >> b[i];
cout << consistency(n, m) << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQojZGVmaW5lIHByaW50KGEpICAgICAgICAgZm9yKGF1dG8geCA6IGEpIGNvdXQgPDwgeCA8PCAiICI7IGNvdXQgPDwgZW5kbAppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYikgewogICAgaW50IHggPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggKj0gYTsKICAgICAgICBhICo9IGE7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgp2ZWN0b3I8aW50PiBhOwp2ZWN0b3I8aW50PiBiOwoKaW50IGNvbnNpc3RlbmN5KGludCBuLCBpbnQgbSl7CglpbnQgYW5zID0gMDsKCQoJaW50IGkgPSAwLCBqID0gMDsKCXdoaWxlKGk8biAmJiBqPG0pewoJCXdoaWxlKGk8biAmJiBhW2ldIDwgYltqXSkgaSsrOwoJCWlmKGk9PW4pIGJyZWFrOwoJCQoJCXdoaWxlKGo8bSAmJiBiW2pdIDwgYVtpXSkgaisrOwoJCWlmKGo9PW0pIGJyZWFrOwoJCQoJCWlmKGFbaV0gIT0gYltqXSkgY29udGludWU7CgkJCgkJaW50IHAgPSBpKzE7CgkJd2hpbGUocDxuICYmIGFbcF0gPT0gYVtpXSkgcCsrOwoJCQoJCWludCBxID0gaisxOwoJCXdoaWxlKHE8bSAmJiBiW3FdID09IGJbal0pIHErKzsKCQkKCQlhbnMgKz0gKHAtaSkqKHEtaik7CgkJCgkJaSA9IHA7CgkJaiA9IHE7Cgl9CgkKCXJldHVybiBhbnM7Cn0JCgoKCgoKCgoKaW50IHByYWN0aWNlKGludCBuLCBpbnQgbSl7CgkKCXJldHVybiAwOwp9CgoKdm9pZCBzb2x2ZSgpIHsKICAgIAogICAgaW50IG4sIG07CiAgICBjaW4+Pm4gPj4gbTsKICAgIAogICAgYS5yZXNpemUobik7CiAgICBiLnJlc2l6ZShtKTsKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykgY2luID4+IGFbaV07CiAgICBmb3IoaW50IGk9MDsgaTxtOyBpKyspIGNpbiA+PiBiW2ldOwogICAgCiAgICBjb3V0IDw8IGNvbnNpc3RlbmN5KG4sIG0pIDw8IGVuZGw7CgoKfQoKCgoKCmludDMyX3QgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGludCB0ID0gMTsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9