#include<bits/stdc++.h>
using namespace std;
//#include <boost/multiprecision/cpp_int.hpp>
//using namespace boost::multiprecision;
#define fio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#pragma GCC optimize "trapv"
#define _GLIBCXX_DEBUG
#define ll long long int
#define ld long double
#define ull unsigned long long int // ranges from (0 - twice of long long int)
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define vll vector<ll>
#define mod 1000000007LL
#define llpair pair<ll,ll>
#define INF 1000000000000000000ll
#define np next_permutation
#define PI acos(-1)
#define deb(x) cout<<#x<<" "<<x<<endl;
#define rotate_left(vec,amt) rotate(vec.begin(),vec.begin()+amt,vec.end());
#define rotate_right(vec,amt) rotate(vec.begin(),vec.begin()+vec.size()-amt,vec.end());
#define all(x) x.begin(),x.end()
#define sortall(x) sort(all(x))
#define clr(x) memset(x,0,sizeof(x))
int main() {
// auto start = chrono::high_resolution_clock::now();
fio;
ll t=1;
cin>>t;
while(t--)
{
ll n; cin>>n;
string s1,s2; cin>>s1>>s2;
bool flag=true;
for(int i=0;i<s1.length();i++)
{
if(s1[i]>s2[i])
{
flag=false;
break;
}
}
if(flag==false)
cout<<-1<<"\n";
else
{
// ans always exists
map<char,set<char>>mp;
map<char,char>mp2; // for updating the value;
for(int i=0;i<s1.length();i++)
{
if(s2[i]!=s1[i])
mp[s2[i]].insert(s1[i]);
}
ll ans=0;
for(auto x: mp)
{
char ch=x.first;
set<char>st=x.second;
for(auto y: st)
{
ll val=y;
if(mp2.count(y)==1) // if updation is required
{
st.erase(y);
st.insert(mp2[val]); // add updated element
}
}
// now check
for(auto y:st)
{
if(y==ch)
st.erase(y);
}
// when updation and removing redudant element is done
ans+=st.size();
for(auto y: st)
{
mp2[y]=ch; // update the value;
}
}
cout<<ans<<"\n";
}
}
//auto finish = chrono::high_resolution_clock::now();
// cerr << "Time elapsed: " << (chrono::duration<long double>(finish-start)).count() << "s\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8jaW5jbHVkZSA8Ym9vc3QvbXVsdGlwcmVjaXNpb24vY3BwX2ludC5ocHA+Ci8vdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjptdWx0aXByZWNpc2lvbjsKI2RlZmluZSBmaW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwojcHJhZ21hIEdDQyBvcHRpbWl6ZSAidHJhcHYiCiNkZWZpbmUgX0dMSUJDWFhfREVCVUcKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nIGludCAgLy8gcmFuZ2VzIGZyb20gKDAgLSB0d2ljZSBvZiBsb25nIGxvbmcgaW50KQojZGVmaW5lIHJlcChpLGEsbikgZm9yIChsbCBpPWE7aTxuO2krKykKI2RlZmluZSBwZXIoaSxhLG4pIGZvciAobGwgaT1uLTE7aT49YTtpLS0pCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgdmxsIHZlY3RvcjxsbD4KI2RlZmluZSBtb2QgMTAwMDAwMDAwN0xMCiNkZWZpbmUgbGxwYWlyIHBhaXI8bGwsbGw+CiNkZWZpbmUgSU5GIDEwMDAwMDAwMDAwMDAwMDAwMDBsbAojZGVmaW5lIG5wIG5leHRfcGVybXV0YXRpb24KI2RlZmluZSBQSSBhY29zKC0xKQojZGVmaW5lIGRlYih4KSBjb3V0PDwjeDw8IiAiPDx4PDxlbmRsOwojZGVmaW5lIHJvdGF0ZV9sZWZ0KHZlYyxhbXQpIHJvdGF0ZSh2ZWMuYmVnaW4oKSx2ZWMuYmVnaW4oKSthbXQsdmVjLmVuZCgpKTsKI2RlZmluZSByb3RhdGVfcmlnaHQodmVjLGFtdCkgcm90YXRlKHZlYy5iZWdpbigpLHZlYy5iZWdpbigpK3ZlYy5zaXplKCktYW10LHZlYy5lbmQoKSk7CiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgc29ydGFsbCh4KSBzb3J0KGFsbCh4KSkKI2RlZmluZSBjbHIoeCkgbWVtc2V0KHgsMCxzaXplb2YoeCkpCgoKCmludCBtYWluKCkgewogIC8vICBhdXRvIHN0YXJ0ID0gY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgZmlvOwogICAgbGwgdD0xOyAKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSkKICAgIHsKCQlsbCBuOyBjaW4+Pm47CgkJc3RyaW5nIHMxLHMyOyBjaW4+PnMxPj5zMjsKCQlib29sIGZsYWc9dHJ1ZTsKCQlmb3IoaW50IGk9MDtpPHMxLmxlbmd0aCgpO2krKykKCQl7CgkJCWlmKHMxW2ldPnMyW2ldKQoJCQl7CgkJCQlmbGFnPWZhbHNlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJCgkJaWYoZmxhZz09ZmFsc2UpCgkJY291dDw8LTE8PCJcbiI7CgkJZWxzZQoJCXsKCQkJLy8gYW5zIGFsd2F5cyBleGlzdHMKCQkJbWFwPGNoYXIsc2V0PGNoYXI+Pm1wOwoJCQltYXA8Y2hhcixjaGFyPm1wMjsgLy8gZm9yIHVwZGF0aW5nIHRoZSB2YWx1ZTsKIAkJCWZvcihpbnQgaT0wO2k8czEubGVuZ3RoKCk7aSsrKQoJCQl7CgkJCQlpZihzMltpXSE9czFbaV0pCgkJCQltcFtzMltpXV0uaW5zZXJ0KHMxW2ldKTsKCQkJfQoJCQkKCQkJbGwgYW5zPTA7CgkJCQoJCQlmb3IoYXV0byB4OiBtcCkKCQkJewoJCQkJY2hhciBjaD14LmZpcnN0OwoJCQkJc2V0PGNoYXI+c3Q9eC5zZWNvbmQ7CgkJCQlmb3IoYXV0byB5OiBzdCkKCQkJCXsKCQkJCQlsbCB2YWw9eTsKCQkJCQlpZihtcDIuY291bnQoeSk9PTEpIC8vIGlmIHVwZGF0aW9uIGlzIHJlcXVpcmVkCiAJCQkJCXsKCQkJCQkJc3QuZXJhc2UoeSk7CgkJCQkJCXN0Lmluc2VydChtcDJbdmFsXSk7ICAvLyBhZGQgdXBkYXRlZCBlbGVtZW50CgkJCQkJCQoJCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkKCQkJCS8vIG5vdyBjaGVjawoJCQkJZm9yKGF1dG8geTpzdCkKCQkJCXsKCQkJCQlpZih5PT1jaCkKCQkJCQlzdC5lcmFzZSh5KTsKCQkJCX0KCQkJCQoJCQkJLy8gd2hlbiB1cGRhdGlvbiBhbmQgcmVtb3ZpbmcgcmVkdWRhbnQgZWxlbWVudCBpcyBkb25lCgkJCQlhbnMrPXN0LnNpemUoKTsKCQkJCWZvcihhdXRvIHk6IHN0KQoJCQkJewoJCQkJCW1wMlt5XT1jaDsgIC8vIHVwZGF0ZSB0aGUgdmFsdWU7CgkJCQl9CgkJCQkKCQkJCQoJCQl9CgkJCQoJCQljb3V0PDxhbnM8PCJcbiI7CgkJCQoJCQkKCQl9CgkJCgl9CiAgICAvL2F1dG8gZmluaXNoID0gY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogLy8gICBjZXJyIDw8ICJUaW1lIGVsYXBzZWQ6ICIgPDwgKGNocm9ubzo6ZHVyYXRpb248bG9uZyBkb3VibGU+KGZpbmlzaC1zdGFydCkpLmNvdW50KCkgPDwgInNcbiI7CiAgICByZXR1cm4gMDsKICAgICAgICAKfQoKCQoKCgoKCgoKCgoKCgoKCgoKCgoK