#include<iostream>
#include<cmath>
using namespace std;
#define ll long long
ll k,ans,cnt[10],s[10],t[10],cntt[10],cnts[10];
string S,T;
ll che(int x,int y) {
	int st=0,ss=0;
	cnts[x]++,cntt[y]++;
	for(int i=1; i<10; i++) {
		ss+=i*pow(10,cnts[i]);
		st+=i*pow(10,cntt[i]);
	}
	cnts[x]--,cntt[y]--;
	if(ss<=st)return 0;
	if(x==y)return cnt[x]*(cnt[x]-1);
	else return cnt[x]*cnt[y];
}
int main() {
	cin>>k>>S>>T;
	for(int i=1; i<10; i++)cnt[i]=k;
	for(int i=1; i<5; i++) {
		s[i]=S[i-1]-'0';
		t[i]=T[i-1]-'0';
		cnt[s[i]]--,cnt[t[i]]--;
		cnts[s[i]]++,cntt[t[i]]++;
	}
	for(int i=1; i<10; i++)
		for(int j=1; j<10; j++)
			ans+=che(i,j);

	double lans=1.0*ans/((9*k-8)*(9*k-9));
	printf("%.9f",lans);
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define lowbit(x) x&(-x)
int tr[N],h,w,m,r[N],c[N];
void upd(int x,int v){
	while(x<=h){
		tr[x]+=v,x+=lowbit(x);
	}
}
int que(int x){int s=0;
	while(x){
		s+=tr[x],x-=lowbit(x);
	}
	return s;
}
int main(){
	scanf("%d%d%d",&h,&w,&m);
	fill(r+1,r+h+1,w+1);	//初始化 
	fill(c+1,c+w+1,h+1);
	while(m--){
		int x,y;scanf("%d%d",&x,&y);
		r[x]=min(r[x],y),c[y]=min(c[y],x);
	}ll ans=0;bool jg=0;
	for(int i=1;i<=h;i++){
		if(jg){
			r[i]=1;continue;
		}
		if(r[i]==1){
			jg=1;continue;
		}
		ans+=r[i]-1;
	}
	vector<int>v[w+2];
	for(int i=1;i<=h;i++) v[r[i]].pb(i);
	for(int i=1;i<=w;i++){
		if(c[i]==1) break;
	 	ans+=que(c[i]-1);
	 	for(int j:v[i]) upd(j,1);
	}printf("%lld\n",ans);
	return 0;
}
