Correcting string names by removing numbers and changing case

Hi,
I have imported my data to R but it has some errors. Some town info includes weird numbers:

source <- data.frame(
  stringsAsFactors = FALSE,
                                    URN = c("aaa","bb","cc","dd",
                                            "ee","ff","gg","hh","ii","jjj",
                                            "kkk","ll","mm","nn","oo","pp",
                                            "qq","rr"),
                                   Town = c("Aberdeen","ABERDEEN",
                                            "ABERDEEN      0498",
                                            "ABERGAVENNY    15656","Aberystwyth",
                                            "ABERYSTWYTH    15574","Accrington",
                                            "Aldershot","ALDERSHOT      10306",
                                            "Barrow-in-Furness","BARROWINFURNESS15405",
                                            "BRISTOL","BRISTOL        15460",
                                            "BRISTOL        15590",
                                            "BRISTOL     1390","Bristol","Burton-on-Trent",
                                            "BURTON-ON-TRENT15660")
                     )

Is it possible to remove all numbers (with prefix gaps if necessery) and changing all names to sentence case in the "Town" variable? I need to get this as a result:

result <- data.frame(
  stringsAsFactors = FALSE,
  URN = c("aaa","bb","cc","dd",
          "ee","ff","gg","hh","ii","jjj",
          "kkk","ll","mm","nn","oo","pp",
          "qq","rr"),
  Town = c("Aberdeen","ABERDEEN",
           "ABERDEEN      0498",
           "ABERGAVENNY    15656","Aberystwyth",
           "ABERYSTWYTH    15574","Accrington",
           "Aldershot","ALDERSHOT      10306",
           "Barrow-in-Furness","BARROWINFURNESS15405",
           "BRISTOL","BRISTOL        15460",
           "BRISTOL        15590",
           "BRISTOL     1390","Bristol","Burton-on-Trent",
           "BURTON-ON-TRENT15660"),
  CorrectTown = c("Aberdeen","Aberdeen",
                  "Aberdeen","Abergavenny",
                  "Aberystwyth","Aberystwyth","Accrington",
                  "Aldershot","Aldershot",
                  "Barrow-in-Furness","Barrow-in-Furness",
                  "Bristol","Bristol","Bristol","Bristol",
                  "Bristol","Burton-on-Trent",
                  "Burton-on-Trent")
)

How can I do that?
I believe, errors like "BARROWINFURNESS15405" should be changed to "Barrow-in-Furness" mannually (unless there is a clever way as there are many UK towns with a structure: name.with.3+characters"-in-"name.with.3+characters).

Can you help?